제출 #235309

#제출 시각아이디문제언어결과실행 시간메모리
235309keta_tsimakuridzeHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
100 / 100
1793 ms131448 KiB
#include<bits/stdc++.h> #define f first #define s second using namespace std; long long n,m,k,a[1000006],cur,x[1000006],tree[4*1000006],i,ans[1000006]; vector<int>v[1000006]; pair< pair<int,int> , pair<int,int> > p[1000006]; void update(int u,int ind,int l,int r,int val){ if(l>ind || r<ind) return; if(l==r) { tree[u]=val; return; } int mid=(l+r)/2; update(2*u,ind,l,mid,val); update(2*u+1,ind,mid+1,r,val); tree[u]=max(tree[2*u],tree[2*u+1]); } int getans(int u,int start,int end,int l,int r){ if(l>end|| r<start) return 0; if(start<=l && r<=end) return tree[u]; int mid=(l+r)/2; return max(getans(2*u,start,end,l,mid),getans(2*u+1,start,end,mid+1,r)); } int main(){ ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>n>>m; for(k=1;k<=n;k++){ cin>>a[k]; cur=k-1; while(a[cur]<=a[k] && cur!=0){ cur=x[cur]; } x[k]=cur; if(cur!=0) update(1,k,1,n,a[cur]+a[k]), v[cur].push_back(k); } for(k=1;k<=m;k++){ cin>>p[k].f.f>>p[k].f.s>>p[k].s.f; p[k].s.s=k; } sort(p+1,p+m+1); i=1; for(k=1;k<=m;k++){ while(i<p[k].f.f){ for(int j=0;j<v[i].size();j++) update(1,v[i][j],1,n,0); i++; } if(getans(1,p[k].f.f,p[k].f.s,1,n)>p[k].s.f)ans[p[k].s.s]=0; else ans[p[k].s.s]=1; } for(k=1;k<=m;k++) cout<<ans[k]<<" "; }

컴파일 시 표준 에러 (stderr) 메시지

sortbooks.cpp: In function 'int main()':
sortbooks.cpp:51:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int j=0;j<v[i].size();j++)
                ~^~~~~~~~~~~~
#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...