#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define rep(a,b) for(int a = 0; a < (b); ++a)
#define all(t) t.begin(), t.end()
#define pb push_back
//#pragma GCC target ("avx2")
//#pragma GCC optimization ("O3")
//#pragma GCC optimization ("unroll-loops")
const int N = 2e5+5432, INF = 2e9+54321;
const ll INF_L = (ll)2e18+54321;
ll n;
ll A[N];
void solve()
{
cin >> n;
rep(i,n) cin >> A[i];
vector<ll> pref(n), suf(n);
vector<ll> R;
for(int i = 1; i < n; ++i) R.pb(A[i]-A[i-1]);
ll su = 0;
rep(i,n-1)
{
if(R[i] <= 0) su += -R[i]+1;
pref[i] = su;
}
su = 0;
for(int i = n-2; i >= 0; --i)
{
if(R[i] >= 0) su += R[i]+1;
suf[i] = su;
}
ll ans = INF_L;
rep(i,n-1)
{
ll cost = pref[i];
if(i+1 < n-1) cost = max(cost,suf[i+1]);
ans = min(ans,cost);
}
bool ok = 1;
rep(i,n-1) if(R[i] >= 0) ok = 0;
if(ok) ans = 0;
ok = 1;
rep(i,n-1) if(R[i] <= 0) ok = 0;
if(ok) ans = 0;
cout << ans << '\n';
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int T = 1;
//cin >> T;
while(T--) solve();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |