#include <bits/stdc++.h>
using namespace std;
#define int long long
#define f first
#define s second
#define pb push_back
#define ld long double
#define pll pair<int, int>
signed main(){
int n;
cin >> n;
int a[n], b[n], v[n], at[n], bt[n], pu, pv;
for(int i=0;i<n;i++){
a[i]=b[i]=0;
cin>>v[i];
}
pu=0,pv=v[0],at[0]=v[0];
for(int i=1;i<n;i++){
int t=pv+1;
if(t<v[i] + pu){
pv=v[i]+pu;
a[i]=pu;
at[i]=pv;
continue;
}
pu+=max(0ll, t-v[i]-pu);
a[i]=pu;
pv = t;
at[i]=pv;
}
pu=0,pv=v[n-1],bt[n-1]=v[n-1];
for(int i=n-2;i>=0;i--){
int t=pv+1;
if(t<v[i] + pu){
pv=v[i]+pu;
b[i]=pu;
}
else{
pu+=max(0ll, t-v[i]-pu);
b[i]=pu;
pv = t;
}
bt[i]=pv;
}
//~ for(int i=0;i<n;i++){
//~ cout<<a[i]<<" "<<b[i]<<" "<<at[i]<<" "<<bt[i]<<endl;
//~ }
int ans=1e9;
for(int i=0;i<n;i++){
ans=min(ans,max(a[i],b[i]));
}
cout<<ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |