This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ff first
#define ss second
#define N 2010000
#define MOD 1000000007
#define INF 0x3f3f3f3f
pair<int, pair<int, int> > seg[N];
int a[N];
void build(int id, int l, int r){
if(l == r){
seg[id].ss.ff = a[l];
seg[id].ss.ss = a[l];
seg[id].ff = 0;
return;
}
int m = (l + r) >> 1;
build(id << 1, l, m);
build(id << 1 | 1, m + 1, r);
seg[id].ss.ss = min(seg[id << 1].ss.ss, seg[id << 1 | 1].ss.ss);
seg[id].ss.ff = max(seg[id << 1].ss.ff, seg[id << 1 | 1].ss.ff);
seg[id].ff = max(seg[id << 1].ff, seg[id << 1 | 1].ff);
if(seg[id << 1].ss.ff > seg[id << 1 | 1].ss.ss){
seg[id].ff = max(seg[id].ff, seg[id << 1].ss.ff + seg[id << 1 | 1].ss.ss);
}
}
pair<int, pair<int, int> > query(int id, int l, int r, int L, int R){
if(l == L && r == R){
return seg[id];
}
int m = (l + r) >> 1;
if(m >= R) return query(id << 1, l, m, L, R);
if(m < L) return query(id << 1 | 1, m + 1, r, L, R);
auto q1 = query(id << 1, l, m, L, m);
auto q2 = query(id << 1 | 1, m + 1, r, m + 1, R);
pair<int, pair<int, int> > q3;
q3.ss.ss = min(q1.ss.ss, q2.ss.ss);
q3.ss.ff = max(q1.ss.ff, q2.ss.ff);
q3.ff = max(q1.ff, q2.ff);
if(q1.ss.ff > q2.ss.ss){
q3.ff = max(q3.ff, q1.ss.ff + q2.ss.ss);
}
return q3;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int n, m;
cin>>n>>m;
for(int i = 1; i <= n; i++){
cin>>a[i];
}
build(1, 1, n);
while(m--){
int l, r, k;
cin>>l>>r>>k;
cout<<(query(1, 1, n, l, r).ff <= k)<<'\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... |