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>
#ifdef LOCAL
#include "/home/trcmai/code/tools.h"
#define debug(x...) cerr << "\e[91m"<<__func__<<":"<<__LINE__<<" [" << #x << "] = ["; _print(x); cerr << "\e[39m" << endl;
#else
#define debug(x...)
#endif
using namespace std;
#define all(a) a.begin(), a.end()
#define ll long long
#define endl '\n'
const int N = 1e6 + 6, LOG = 27, MOD = 1e9 + 7;
const ll INF = 1e18;
int n,q; ll a[N],st[4*N];
void build(int i,int l,int r){
if(l == r){st[i] = a[l]; return;}
int m = (r+l) >> 1;
build(2*i,l,m); build(2*i+1,m+1,r);
st[i] = max(st[2*i],st[2*i+1]);
}
ll get(int i,int l,int r,int ql,int qr){
if(l > qr || r < ql) return 0;
if(ql <= l && r <= qr) return st[i];
int m = (r+l) >> 1;
return max(get(2*i,l,m,ql,qr),get(2*i+1,m+1,r,ql,qr));
}
signed main() {
cin.tie(0)->sync_with_stdio(0);
auto solver=[&](){
cin>>n>>q;
for(int i = 1;i <= n;++i) cin>>a[i];
build(1,1,n);
while(q--){
int l,r,k; cin>>l>>r>>k;
bool res = true;
for(int i = l + 1;i <= r;++i){
ll mx = get(1,1,n,l,i - 1);
if(mx < a[i]) continue;
if(mx + a[i] > k){
res = false;
break;
}
}
cout<<res<<endl;
}
};
int t = 1; // cin>>t;
while (t--) solver();
}
# | 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... |