Submission #227787

#TimeUsernameProblemLanguageResultExecution timeMemory
2277872fat2codeWall (IOI14_wall)C++17
100 / 100
901 ms67728 KiB
#include "wall.h" #pragma GCC optimize("O3") #pragma GCC optimize("Ofast") #include <bits/stdc++.h> #define ll long long #define ld long double #define all(a) (a).begin(), (a).end() #define sz() size() #define fr first #define sc second #define pi pair<int,int> #define pii pair<pair<int,int>,int> #define mp make_pair //#define int long long #define rc(s) return cout<<s,0 #define rcc(s) cout<<s,exit(0) using namespace std; const int nmax=2000005; int up[4*nmax],down[4*nmax],ans[nmax],lazy[4*nmax]; void lazi(int nod,int up1,int down1){ down[nod]=max(down[nod],down1); down[nod]=min(down[nod],up1); up[nod]=min(up[nod],up1); up[nod]=max(up[nod],down1); } void update(int l,int r,int le,int ri,int op,int h,int nod){ if(l>ri || r<le) return; else if(l>=le && r<=ri){ if(op==1){ up[nod]=max(up[nod],h); down[nod]=max(down[nod],h); } else{ up[nod]=min(up[nod],h); down[nod]=min(down[nod],h); } } else{ lazi(2*nod,up[nod],down[nod]); lazi(2*nod+1,up[nod],down[nod]); int mid=l+(r-l)/2; update(l,mid,le,ri,op,h,2*nod); update(mid+1,r,le,ri,op,h,2*nod+1); down[nod]=0; up[nod]=1e18; } } void complete(int l,int r,int nod){ if(l!=r){ int mid=l+(r-l)/2; lazi(2*nod,up[nod],down[nod]); lazi(2*nod+1,up[nod],down[nod]); complete(l,mid,2*nod); complete(mid+1,r,2*nod+1); } else{ ans[l]=up[nod]; } } void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ for(int i=1;i<=k;i++){ update(1,n,left[i-1]+1,right[i-1]+1,op[i-1],height[i-1],1); } complete(1,n,1); for(int i=1;i<=n;i++) finalHeight[i-1]=ans[i]; }

Compilation message (stderr)

wall.cpp: In function 'void update(int, int, int, int, int, int, int)':
wall.cpp:49:17: warning: overflow in implicit constant conversion [-Woverflow]
         up[nod]=1e18;
                 ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...