제출 #779844

#제출 시각아이디문제언어결과실행 시간메모리
779844khoquennguoiminhthuongHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
0 / 100
544 ms57944 KiB
#include <bits/stdc++.h> using namespace std; long long n,q; long long a[1000005]; long long tree[1000005]; void upd(long long id,long long val) { while(id>0) { tree[id]=max(tree[id],val); id-=(id&(-id)); } } long long get(long long id) { long long maxx=-2e9; while(id<=n) { maxx=max(maxx,tree[id]); id+=(id&(-id)); } return maxx; } struct que { long long l,r,k,id; } qu[1000005]; bool cmp(que a,que b) { return a.r<b.r; } int ans[1000005]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>q; for(long long i=1; i<=n; i++)cin>>a[i]; for(long long i=1; i<=q; i++) { long long l,r,k; cin>>l>>r>>k; qu[i]= {l,r,k,i}; } sort(qu+1,qu+q+1,cmp); long long dd=0; stack<long long>st; for(long long i=1; i<=q; i++) { while(dd+1<=qu[i].r) { dd++; while(st.size()&&a[st.top()]<a[dd])st.pop(); if(st.size()>0){upd(st.top(),a[st.top()]+a[dd]);} st.push(dd); } if(get(qu[i].l)>qu[i].k)ans[qu[i].id]=0; else ans[qu[i].id]=1; } for(long long i=1; i<=q; 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...