Submission #1040334

#TimeUsernameProblemLanguageResultExecution timeMemory
1040334vjudge1Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
8 / 100
3074 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(); while(m--) { long long l,r,k; cin>>l>>r>>k; while(r>=l&&getmx(l,r).first==a[r]) { r--; } if(r<l) cout<<1<<endl; else { bool kt=true; for(int i=r-1;i>=l;i--) { // pair<long long,long long> p=getmx(i,r); long long h=get(i,r,a[i]); // cout<<a[i]<<' '<<h<<endl; if(a[i]+h<=k) { continue; } else { kt=false; } } cout<<kt<<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...