結果
| 問題 | No.905 Sorted? | 
| コンテスト | |
| ユーザー |  沙耶花 | 
| 提出日時 | 2019-10-11 22:09:01 | 
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 229 ms / 2,000 ms | 
| コード長 | 1,391 bytes | 
| コンパイル時間 | 1,468 ms | 
| コンパイル使用メモリ | 175,016 KB | 
| 実行使用メモリ | 6,820 KB | 
| 最終ジャッジ日時 | 2024-11-25 07:36:16 | 
| 合計ジャッジ時間 | 4,900 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 23 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define modulo 998244353
#define mod(mod_x) ((((long long)mod_x+modulo))%modulo)
#define Inf 1000000000000000000
int main(){
	
	int N;
	cin>>N;
	
	vector<long long> A(N);
	for(int i=0;i<N;i++){
		cin>>A[i];
	}
	
	vector<pair<int,int>> f,g;
	int last = 0;
	for(int i=0;i<N;i++){
		if(i==0)continue;
		if(A[i]<A[i-1]){
			f.emplace_back(last,i-1);
			last=i;
		}
	}
	f.emplace_back(last,N-1);
	
	last=0;
	for(int i=0;i<N;i++){
		if(i==0)continue;
		if(A[i]>A[i-1]){
			g.emplace_back(last,i-1);
			last=i;
		}
	}
	g.emplace_back(last,N-1);
	/*
	for(int i=0;i<f.size();i++){
		cout<<f[i].first<<','<<f[i].second<<endl;
	}
	cout<<endl;
	for(int i=0;i<g.size();i++){
		cout<<g[i].first<<','<<g[i].second<<endl;
	}
	cout<<endl;
	*/
	int Q;
	cin>>Q;
	
	for(int i=0;i<Q;i++){
		int l,r;
		cin>>l>>r;
		
		auto it1 = lower_bound(f.begin(),f.end(),make_pair(l,0));
		auto it2 = lower_bound(f.begin(),f.end(),make_pair(r,0));
		if(it1==f.end()||(*it1).first>l)it1--;
		if(it2==f.end()||(*it2).first>r)it2--;
		
		if(it1==it2)cout<<1;
		else cout<<0;
		
		cout<<' ';
		
		it1 = lower_bound(g.begin(),g.end(),make_pair(l,0));
		it2 = lower_bound(g.begin(),g.end(),make_pair(r,0));
		
		if(it1==g.end()||(*it1).first>l)it1--;
		if(it2==g.end()||(*it2).first>r)it2--;
		
		if(it1==it2)cout<<1;
		else cout<<0;
		
		cout<<endl;
	}
		
		
	
    return 0;
}
            
            
            
        