제출 #1132615

#제출 시각아이디문제언어결과실행 시간메모리
1132615AgageldiHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
0 / 100
797 ms10188 KiB
/*
ID: agageld1
LANG: C++17
TASK:
*/
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define N 4000005
#define ff first
#define ss second
#define pb push_back
#define sz(s) (int)s.size()
#define rep(c, a, b) for(c = a; c <= b; c++)

//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int n, t, a[N], l, r, x, mx, q, b[N];
vector <pair<int,int>> v;

int main () {
	ios::sync_with_stdio(0);cin.tie(0);
	cin >> n >> q;
	for(int i= 1;i<=n;i++) {
		cin >> a[i];
	}
	l = 1;
	for(int i = 2; i <= n; i++) {
		if(a[i] >= a[i - 1]) continue;
		v.pb({l, i - 1});
		l = i;
	}
	v.pb({l, n});
	for(int i = 1; i <= q; i++) {
		cin >> l >> r >> x;
		if(l == r) {
			cout << "1\n";
			continue;
		}
		auto p = lower_bound(v.begin(),v.end(),make_pair(l,r));
		if(p == v.end()) {
			cout << "0\n";
			continue;
		}
		if((*p).ff <= l && (*p).ss >= r) {
			cout << "1\n";
			continue;
		}
		if((*p).ff != v[0].ff || (*p).ss != v[0].ss) p--;
		if((*p).ff <= l && (*p).ss >= r) {
			cout << "1\n";
			continue;
		}
		mx = a[l];
		bool tr = 0;
		for(int j = l + 1; j <= r; j++) {
			if(mx > a[j] && mx + a[j] > x) {
				tr = 1;
				break;
			}
			mx = max(mx,a[j]);
		}
		if(tr) cout << "0\n";
		else cout << "1\n";
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...