제출 #867854

#제출 시각아이디문제언어결과실행 시간메모리
867854ttamx새로운 문제 (POI11_pio)C++14
27 / 100
198 ms12112 KiB
#include<bits/stdc++.h> using namespace std; typedef pair<int,int> p2; const int N=5e5+5; const int inf=1e9; int n; int h[N],dp[N]; void solvel(int l,int r,int optl,int optr){ if(l>r)return; int mid=(l+r)/2; p2 res(-inf,0); for(int i=optl;i<=min(mid,optr);i++)res=max(res,p2(h[i]+ceil(sqrt(mid-i))-h[mid],-i)); dp[mid]=max(dp[mid],res.first); int opt=-res.second; solvel(l,mid-1,optl,opt); solvel(mid+1,r,opt,optr); } void solver(int l,int r,int optl,int optr){ if(l>r)return; int mid=(l+r)/2; p2 res(-inf,0); for(int i=max(mid,optl);i<=optr;i++)res=max(res,p2(h[i]+ceil(sqrt(i-mid))-h[mid],i)); dp[mid]=max(dp[mid],res.first); int opt=res.second; solver(l,mid-1,optl,opt); solver(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]; solvel(1,n,1,n); solver(1,n,1,n); 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...