Submission #931845

#TimeUsernameProblemLanguageResultExecution timeMemory
931845AiperiiiHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
100 / 100
2220 ms156296 KiB
#include <bits/stdc++.h> #define int long long #define ff first #define ss second #define all(x) x.begin(),x.end() #define pb push_back using namespace std; const int N=1e6+5; int t[N*4],a[N],ans[N]; vector <vector <int> > qu[N]; void update(int v,int tl,int tr,int pos,int val){ if(tl==tr)t[v]=val; else{ int tm=(tl+tr)/2; if(pos<=tm)update(v*2,tl,tm,pos,val); else update(v*2+1,tm+1,tr,pos,val); t[v]=max(t[v*2],t[v*2+1]); } } int get(int v,int tl,int tr,int l,int r){ if(r<tl or tr<l)return INT_MIN; if(l<=tl && tr<=r)return t[v]; int tm=(tl+tr)/2; return max(get(v*2,tl,tm,l,r),get(v*2+1,tm+1,tr,l,r)); } signed main(){ ios_base::sync_with_stdio(); cin.tie(0);cout.tie(0); int n,q; cin>>n>>q; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=0;i<q;i++){ int l,r,x; cin>>l>>r>>x; qu[r].pb({l,x,i}); } stack <int> st; for(int i=1;i<=n;i++){ while(!st.empty()){ if(a[st.top()]>a[i])break; st.pop(); } if(!st.empty())update(1,1,n,st.top(),a[st.top()]+a[i]); for(auto v : qu[i]){ int mx=get(1,1,n,v[0],i); if(mx<=v[1])ans[v[2]]=1; } st.push(i); } for(int i=0;i<q;i++)cout<<ans[i]<<"\n"; } /* */
#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...