제출 #1040325

#제출 시각아이디문제언어결과실행 시간메모리
1040325vjudge1Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
0 / 100
3040 ms262144 KiB
#include<bits/stdc++.h> using namespace std; long long n,m,a[1000006],b[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; } if(getmx(l,r).first!=w) return w; 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 // { // pair<long long,long long> p=getmx(l,r); // long long h=get(p.second,r,p.first); // if(p.first+h<=k) // { // cout<<1<<endl; // } // else cout<<0<<endl; // } long long res=0; for(int i=l;i<=r;i++) { b[i]=a[i]; } for(int i=r;i>=l;i--) { for(int j=i-1;j>=l;j--) { if(b[j]>b[j+1]) { res=max(res,b[j]+b[j+1]); swap(b[j],b[j+1]); } } } if(res<=k) cout<<1<<endl; else cout<<0<<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...