제출 #236644

#제출 시각아이디문제언어결과실행 시간메모리
236644kshitij_sodaniHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
100 / 100
1617 ms75120 KiB
#include <bits/stdc++.h> using namespace std; typedef int64_t llo; #define mp make_pair #define pb push_back #define a first #define b second int n; int it[1000001]; int aa,bb,cc; int tree[4000001]; int le[1000001]; int ans[1000001]; vector<pair<pair<int,int>,int>> qq[1000001]; void update(int no,int l,int r,int aa,int val){ if(l==r){ tree[no]=val; } else{ int mid=(l+r)/2; if(aa<=mid){ update(no*2+1,l,mid,aa,val); } else{ update(no*2+2,mid+1,r,aa,val); } tree[no]=max(tree[no*2+1],tree[no*2+2]); } } int query(int no,int l,int r,int aa,int bb){ if(r<aa or l>bb){ return 0; } if(aa<=l and r<=bb){ return tree[no]; } else{ int mid=(l+r)/2; return max(query(no*2+1,l,mid,aa,bb),query(no*2+2,mid+1,r,aa,bb)); } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int m; cin>>n>>m; stack<int> ss; memset(le,0,sizeof(le)); for(int i=0;i<n;i++){ cin>>it[i]; while(ss.size()){ if(it[ss.top()-1]<=it[i]){ ss.pop(); } else{ break; } } if(ss.size()){ le[i]=ss.top(); } ss.push(i+1); } for(int i=0;i<m;i++){ ans[i]=0; cin>>aa>>bb>>cc; aa-=1; bb-=1; qq[bb].pb({{aa,cc},i}); } for(int i=0;i<n;i++){ if(le[i]){ update(0,0,n-1,le[i]-1,it[le[i]-1]+it[i]); // cout<<i<<",,"<<le[i]<<endl; } for(auto j:qq[i]){ // cout<<query(0,0,n-1,j.a.a,i)<<","<<j.b<<endl; ans[j.b]=(query(0,0,n-1,j.a.a,i)<=j.a.b?1:0); } } for(int i=0;i<m;i++){ cout<<ans[i]<<'\n'; } return 0; }
#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...