Submission #718841

#TimeUsernameProblemLanguageResultExecution timeMemory
718841Ahmed57Lightning Conductor (POI11_pio)C++14
100 / 100
356 ms13244 KiB
#include <bits/stdc++.h> using namespace std; #define int long long long long dp[500001]; long long arr[500001]; void dc(int l,int r,int optl,int optr){ if(l>r)return ; int mid = (l+r)/2; long long best = optl; for(int cut = optl;cut<=min(mid,optr);cut++){ if(arr[best]+sqrt(abs(mid-best))<arr[cut]+sqrt(abs(mid-cut))){ best = cut; } } int val = sqrt(abs(mid-best)); double dd = sqrt((double)abs(mid-best)); if(val!=dd)val++; dp[mid]=max(dp[mid],arr[best]+val-arr[mid]); int opt = best; dc(l,mid-1,optl,opt); dc(mid+1,r,opt,optr); } signed main(){ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n; cin>>n; for(int i = 1;i<=n;i++){ cin>>arr[i]; } for(int i = 0;i<=n;i++)dp[i] = 0; dc(1,n,1,n); reverse(arr+1,arr+n+1); reverse(dp+1,dp+n+1); dc(1,n,1,n); reverse(dp+1,dp+n+1); reverse(arr+1,arr+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...