Submission #867852

#TimeUsernameProblemLanguageResultExecution timeMemory
867852ttamxLightning Conductor (POI11_pio)C++14
27 / 100
214 ms14052 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 solve(int l,int r,int optl,int optr,int t){
    if(l>r)return;
    int mid=(l+r)/2;
    p2 res(-inf,-1);
    for(int i=max(optl,t?mid:0);i<=min(optr,t?n:mid);i++)res=max(res,p2(h[i]+ceil(sqrt(abs(mid-i)))-h[mid],i));
    dp[mid]=max(dp[mid],res.first);
    int opt=res.second;
    solve(l,mid-1,optl,opt,t);
    solve(mid+1,r,opt,optr,t);
}

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,t);
    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...