Submission #746529

#TimeUsernameProblemLanguageResultExecution timeMemory
746529DenkataHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
0 / 100
843 ms89356 KiB
#include<bits/stdc++.h> #define endl '\n' using namespace std; const int maxn = 1e6+3; int i,j,p,q,n,m,k,a[maxn],Q,b[maxn]; char s[maxn]; struct Pic { int l,k,ind; }; vector <Pic> queries[maxn]; void upd(int p,int val) { while(p>=0) { b[p]=max(b[p],val); p=(p&(p+1))-1; } } int rsq(int p) { int sum = 0; while(p<=n) { sum = max(sum,b[p]); p = (p|(p+1)); } return sum; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n>>Q; for(i=1;i<=n;i++) cin>>a[i]; for(i=1;i<=Q;i++) { cin>>p>>q>>k; queries[q].push_back({p,k,i}); } stack <int> st; for(i=1;i<=n;i++) { while(!st.empty() && a[st.top()]<a[i]) { st.pop(); } if(!st.empty()) upd(st.top(),a[st.top()]+a[i]); st.push(i); for(auto j:queries[i]) s[j.ind] = (char)((rsq(j.l)<=j.k)+ '0'); } for(i=1;i<=Q;i++) cout<<s[i]<<endl; 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...