#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i, a, b) for(int i = a ; i <= b ; i++)
#define FORD(i, a, b) for(int i = a ; i >= b ; i--)
#define REP(i, a, b) for(int i = a ; i < b ; i++)
const bool Multitest = 0, Local = 0;
const int N = 2e5 + 10;
int a[N], n;
ll ans = 1e18, pref[N], suff[N];
void work()
{
cin >> n;
FOR(i, 1, n) cin >> a[i];
int cur = a[1] + 1;
FOR(i, 2, n)
{
if(a[i] < cur)
{
pref[i] += cur - a[i];
}
cur = max(cur, a[i]); cur++;
pref[i] += pref[i - 1];
}
cur = a[n] + 1;
FORD(i, n, 1)
{
if(a[i] < cur)
{
suff[i] += cur - a[i];
}
cur = max(cur, a[i]); cur++;
suff[i] += suff[i + 1];
}
FOR(i, 1, n) ans = min(ans, max(suff[i], pref[i]));
cout << ans;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int q = 1;
if(Local && fopen("code.inp", "r"))
{
freopen("code.inp", "r", stdin);
freopen("code.ans", "w", stdout);
}
if(Multitest) cin >> q;
while(q--) work();
}
Compilation message (stderr)
Main.cpp: In function 'int main()':
Main.cpp:60:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
60 | freopen("code.inp", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:61:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
61 | freopen("code.ans", "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |