Submission #867859

#TimeUsernameProblemLanguageResultExecution timeMemory
867859ttamxLightning Conductor (POI11_pio)C++14
100 / 100
184 ms12112 KiB
#include<bits/stdc++.h> using namespace std; const int N=5e5+5; const int inf=1e9; int n; int h[N],dp[N]; void solve(int l,int r,int optl,int optr){ if(l>r)return; int mid=(l+r)/2; int opt=optl; for(int i=optl;i<=min(mid,optr);i++)if(h[i]+sqrt(mid-i)>h[opt]+sqrt(mid-opt))opt=i; dp[mid]=max(dp[mid],h[opt]-h[mid]+(int)ceil(sqrt(mid-opt))); solve(l,mid-1,optl,opt); solve(mid+1,r,opt,optr); } int main(){ cin.tie(nullptr)->sync_with_stdio(false); cin >> n; for(int i=1;i<=n;i++)cin >> h[i]; for(int t=0;t<2;t++){ solve(1,n,1,n); reverse(h+1,h+n+1); reverse(dp+1,dp+n+1); } for(int i=1;i<=n;i++)cout << dp[i] << "\n"; }
#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...
#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...