/*
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |