#include <iostream>
using namespace std;
#define ll long long
const int N=2e5+10;
ll a[N],b[N];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
// a[i]-=i;
}
ll ans=1e18;
for(int k=1;k<=n;k++)
{
ll ad=0;
for(int i=1;i<=k;i++)
{
a[i]-=i;
}
for(int i=2;i<=k;i++)
{
ad+=max(0ll,a[i-1]-a[i]);
}
// a[k] ---> a[k]+ad
for(int i=1;i<=k;i++)
{
a[i]+=i;
}
// a[k]+=ad;
for(int i=k;i<=n;i++)
{
a[i]+=i;
}
a[k]+=ad;
int p=k;
for(int i=k+1;i<=n;i++)
{
if(a[i-1]>=(a[i]+ad))
{
p=i;
a[i]+=ad;
}
else
{
break;
}
}
ll xd=0;
for(int i=n-1;i>=k;i--)
{
xd+=max(0ll,a[i+1]-a[i]);
}
for(int i=k;i<=n;i++)
{
a[i]-=i;
}
for(int i=k;i<=p;i++)a[i]-=ad;
// a[k]-=ad;
// cout<<"At "<<k<<" "<<xd+ad<<endl;
ans=min(xd+ad,ans);
// a[k]+ad a[k]+xd
// we make a[k]
}
// for(int k=1;k<=n;k++)
// {
// for(int i=k;i<=n;i++)
// {
// a[i]+=i;
// }
// ll xd=0;
// for(int i=n-1;i>=k;i--)
// {
// xd+=max(0ll,a[i+1]-a[i]);
// }
// for(int i=k;i<=n;i++)
// {
// a[i]-=i;
// }
// a[k]+=xd;
// ll ad=0;
// for(int i=1;i<=k;i++)
// {
// a[i]-=i;
// }
// for(int i=2;i<=k;i++)
// {
// ad+=max(0ll,a[i-1]-a[i]);
// }
// // a[k] ---> a[k]+ad
// for(int i=1;i<=k;i++)
// {
// a[i]+=i;
// }
// a[k]-=xd;
// cout<<"At "<<k<<" "<<xd+ad<<endl;
// ans=min(xd+ad,ans);
// // a[k]+ad a[k]+xd
// // we make a[k]
// }
cout<<ans<<endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |