Submission #1040338

#TimeUsernameProblemLanguageResultExecution timeMemory
1040338vjudge1Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
17 / 100
151 ms262144 KiB
#include<bits/stdc++.h> using namespace std; long long n,m,a[1000006],rmx[30][1000006],vt[30][1000006]; void buildd() { for(int i=1;i<=n;i++) { rmx[0][i]=a[i]; vt[0][i]=i; } for(int i=1;i<=21;i++) { for(int j=1;j<=n-(1<<i)+1;j++) { if(rmx[i-1][j]>=rmx[i-1][j+(1<<(i-1))]) { rmx[i][j]=rmx[i-1][j]; vt[i][j]=vt[i-1][j]; } else { rmx[i][j]=rmx[i-1][j+(1<<(i-1))]; vt[i][j]=vt[i-1][j+(1<<(i-1))]; } } } } pair<int,int> getmx(long long l,long long r) { long long k=__lg(r-l+1); if(rmx[k][l]>=rmx[k][r-(1<<k)+1]) { return {rmx[k][l],vt[k][l]}; } else return {rmx[k][r-(1<<k)+1],vt[k][r-(1<<k)+1]}; } long long get(long long l,long long r,long long w) { if(l==r) { if(a[l]<w) return a[l]; else return -1; } pair<int,int> p=getmx(l,r); if(p.first<w) return p.first; long long mid=(l+r)/2; return max(get(l,mid,w),get(mid+1,r,w)); } int main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); // freopen(".inp","r",stdin); // freopen(".out","w",stdout); cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; } buildd(); if(m<=5000) while(m--) { long long l,r,k; cin>>l>>r>>k; long long mx=a[l],res=0;; for(int i=l+1;i<=r;i++) { if(a[i]>=mx) { mx=a[i]; } else { res=max(res,mx+a[i]); } } if(res<=k) cout<<1<<"\n"; else cout<<0<<"\n"; } else { while(m--) { cout<<0<<"\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...