Submission #480271

#TimeUsernameProblemLanguageResultExecution timeMemory
480271Ronin13Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
30 / 100
1121 ms98364 KiB
#include<bits/stdc++.h> #define ll long long #define ull unsigned ll #define pll pair<ll,ll> #define pii pair<int,int> #define f first #define s second #define pb push_back #define epb emplace back #define inf 1e9+1 #define linf 1e18+1 using namespace std; void solve(){ int n,m;cin>>n>>m; int a[n+1]; int mx=0; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)mx=max(mx,a[i]); if(mx<1000){ int used[2001]; int dp[2001]; for(int i=0;i<=2000;i++)used[i]=-1; for(int i=0;i<=2000;i++)dp[i]=-1; vector<pair<pii,pii> >q; int ind=0; while(m--){ int l,r,x;cin>>l>>r>>x; q.pb({{r,l},{x,ind++}}); } ind=0; sort(q.begin(),q.end()); vector<int>ans(100001); for(int i=1;i<=n;i++){ for(int w=1999;w>=0;w--){ int x=w-a[i]; if(x>a[i]){ dp[w]=max({dp[w],dp[w+1],used[x]}); } else dp[w]=max(dp[w+1],dp[w]); } used[a[i]]=i; while(ind<q.size()){ if(q[ind].f.f!=i)break; int ww=q[ind].s.f; int l=q[ind].f.s; int idx=q[ind].s.s; if(ww>=2000){ ans[idx]=1; ind++; continue; } if(dp[ww+1]>=l)ans[idx]=0; else ans[idx]=1; ind++; } } for(int i=0;i<ind;i++)cout<<ans[i]<<"\n"; return; } if(n<=5000){ int mx[n+1][n+1]; for(int i=1;i<=n;i++){ mx[i][i]=a[i]; for(int j=i+1;j<=n;j++)mx[i][j]=max(mx[i][j-1],a[j]); } while(m--){ int l,r,x;cin>>l>>r>>x; bool ind=true; for(int i=l+1;i<=r;i++){ if(a[i]<mx[l][i-1]){ if(a[i]+mx[l][i-1]>x){ ind=false; } } } if(ind)cout<<1<<"\n"; else cout<<0<<"\n"; } return; } vector<pii>aa,b; aa.pb({0,0}); b.pb({0,0}); int st=1; for(int i=2;i<=n;i++){ if(a[i]<a[i-1]){ aa.pb({st,st}); b.pb({i-1,st}); st=i; } } aa.pb({st,st}); b.pb({n,st}); while(m--){ int l,r,x;cin>>l>>r>>x; pii ss={l,inf},rr={r,-6}; int ind=upper_bound(aa.begin(),aa.end(),ss)-aa.begin()-1; int ind1=lower_bound(b.begin(),b.end(),rr)-b.begin(); if(aa[ind].s==b[ind1].s)cout<<1<<"\n"; else cout<<0<<"\n"; } } int main(){ ios_base::sync_with_stdio(false);cin.tie(0); //freopen("in.in","r",stdin);freopen("out.out","w",stdout); int test=1;//cin>>test; while(test--){ solve(); } }

Compilation message (stderr)

sortbooks.cpp: In function 'void solve()':
sortbooks.cpp:43:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::pair<int, int>, std::pair<int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |             while(ind<q.size()){
      |                   ~~~^~~~~~~~~
#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...