Submission #993582

#TimeUsernameProblemLanguageResultExecution timeMemory
993582vivkostovHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
30 / 100
1089 ms83108 KiB
#include<bits/stdc++.h> #define endl "\n" using namespace std; void speed() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } struct cell { long long int l,r,c,in; void read() { cin>>l>>r>>c; } }; bool cmp(cell a1,cell a2) { return a1.r<a2.r; } cell b[1000005]; long long int n,m,a[1000005],l,r,c,p[4000005],otg[1000005]; void update(long long int l,long long int r,long long int ql,long long int qr,long long int h,long long int x) { if(l>qr||r<ql)return; if(l>=ql&&r<=qr) { p[h]=max(x,p[h]); return; } long long int m=(l+r)/2; update(l,m,ql,qr,h*2,x); update(m+1,r,ql,qr,h*2+1,x); p[h]=max(max(p[h*2],p[h*2+1]),p[h]); } long long int query(long long int l,long long int r,long long int ql,long long int qr,long long int h) { if(l>qr||r<ql)return 0; if(l>=ql&&r<=qr)return p[h]; long long int m=(l+r)/2; return max(query(l,m,ql,qr,h*2),query(m+1,r,ql,qr,h*2+1)); } stack<long long int>s; stack<long long int>in; void read() { cin>>n>>m; for(long long int i=1;i<=n;i++) { cin>>a[i]; } for(long long int i=1;i<=m;i++) { b[i].read(); b[i].in=i; } sort(b+1,b+m+1,cmp); long long int pos=0; for(long long int i=1;i<=m;i++) { for(long long int j=max(pos,b[i].l);j<=b[i].r;j++) { while(!s.empty()&&s.top()<=a[j]) { s.pop(); in.pop(); } if(s.empty()) { s.push(a[j]); in.push(j); } else { update(1,n,in.top(),in.top(),1,a[j]+s.top()); s.push(a[j]); in.push(j); } } if(b[i].c>=query(1,n,b[i].l,b[i].r,1))otg[b[i].in]=1; pos=b[i].r; } for(long long int i=1;i<=m;i++) { cout<<otg[i]<<endl; } } int main() { speed(); read(); 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...