Submission #43766

#TimeUsernameProblemLanguageResultExecution timeMemory
43766faustaadpWall (IOI14_wall)C++14
100 / 100
1480 ms262144 KiB
#include "wall.h" #include<bits/stdc++.h> #define ll long long using namespace std; ll i,mi[8080808],ma[8080808],h[2020202]; void tum(ll aa,ll bb,ll cc) { mi[aa]=min(mi[aa],bb); ma[aa]=min(ma[aa],bb); ma[aa]=max(ma[aa],cc); } void upd(ll aa,ll bb,ll cc,ll dd,ll ee,ll ff,ll gg) { if(aa==bb) h[aa]=ma[ee]; else if(mi[ee]!=1e17||ma[ee]!=0) { tum(ee*2,mi[ee],ma[ee]); tum(ee*2+1,mi[ee],ma[ee]); mi[ee]=1e17; ma[ee]=0; } if(bb<cc||dd<aa) return ; else if(cc<=aa&&bb<=dd) tum(ee,ff,gg); else { upd(aa,(aa+bb)/2,cc,dd,ee*2,ff,gg); upd((aa+bb)/2+1,bb,cc,dd,ee*2+1,ff,gg); } } void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ for(i=1;i<=4*n;i++) mi[i]=1e17; for(i=0;i<k;i++) if(op[i]==1) upd(0,n-1,left[i],right[i],1,1e17,height[i]); else upd(0,n-1,left[i],right[i],1,height[i],0); for(i=0;i<n;i++) upd(0,n-1,i,i,1,1e17,0); for(i=0;i<n;i++) finalHeight[i]=h[i]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...