#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define ub upper_bound
#define lb lower_bound
#define ll long long
#define ld long double
#define pii pair<int, int>
#define pll pair<ll, ll>
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(),x.rend()
#define prc(n) fixed << setprecision(n)
#define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define pi acos(-1);
const int inf = 1e9+7;
const int N = 1e6+5;
int n, m, aaa[N], s, a[N];
vector<int>tree;
int find(int l, int r, int lx, int rx, int x){
if(lx > r || rx < l) return 0;
if(lx >= l && rx <= r) return tree[x];
int m = (lx + rx)/2;
return max(find(l, r, lx, m, x*2), find(l, r, m+1, rx, x*2+1));
}
void update(int i, int v, int lx, int rx, int x){
if(lx == rx){ tree[x] = v; return; }
int m = (lx + rx)/2;
if(i <= m) update(i, v, lx, m, x*2);
else update(i, v, m+1, rx, x*2+1);
tree[x] = max(tree[x*2], tree[x*2+1]);
}
void print(){
for(int i=1;i<2*s;i++) cout<<tree[i]<<" ";
cout<<endl;
}
void solve(){
cin>>n>>m;
s = 2;
while(s < n) s<<=1;
tree.resize(s*2, 0);
for(int i=0;i<n;i++) cin>>a[i];
vector<pair<pii, pii>> vv;
for(int i=0;i<m;i++){
int l, r, k;
cin>>l>>r>>k;
vv.pb({{r, l}, {k, i}});
}
sort(all(vv));
vector<pii>ans;
int last = 0;
for(int i=0;i<n;i++){
while(!ans.empty() && ans.back().ff < a[i]) ans.pop_back();
bool flag = 0;
if(ans.empty()){
ans.pb({a[i], i+1});
flag = 1;
}
int x = ans.back().ff, y = ans.back().ss;
if(!flag) ans.pb({a[i], i+1});
if(x > a[i])
update(y, a[i] + x, 1, s, 1);
while(last < m && vv[last].ff.ff == i+1){
int res = find(vv[last].ff.ss, vv[last].ff.ff, 1, s, 1);
aaa[vv[last].ss.ss] = (vv[last].ss.ff >= res);
last++;
}
if(last == m) break;
}
//print();
for(int i=0;i<m;i++) cout<<aaa[i]<<"\n";
}
signed main(){
fastios
int t = 1;
//cin>>t;
while(t--) solve();
return 0;
}
# | 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... |