#include <bits/stdc++.h>
using namespace std;
#define int long long
#define tiii tuple<int, int, int>
#define arrs arr + 1, arr + n + 1
#define cems cem + 1, cem + n + 1
#define vts vt.begin(), vt.end()
#define vrs vr.begin(), vr.end()
#define as a.begin(), a.end()
#define bs b.begin(), b.end()
#define ull unsigned long long
#define pri priority_queue
#define pii pair<int, int>
#define lb lower_bound
#define ub upper_bound
#define dl double long
#define pb push_back
#define S second
#define db double
#define F first
#define Ronaldo while
const int MAX = 2e5 + 5, inf = 1e18;
void cr7() {
int n; cin >> n;
int arr[n + 1];
for (int i = 1; i <= n; i++) cin >> arr[i];
int a[n + 5], b[n + 5];
a[1] = 0, b[n] = 0;
for (int i = 2; i <= n; i++) a[i] = a[i - 1] + max(arr[i - 1] - arr[i] + 1, 0ll);
for (int i = n - 1; i >= 1; i--) b[i] = b[i + 1] + max(arr[i + 1] - arr[i] + 1, 0ll);
int min_val = inf;
for (int i = 1; i <= n; i++){
min_val = min(min_val, a[i] + b[i]);
//cout << b[i] << " ";
}
cout << min_val << endl;
}
signed main(){
int GOAT = 1;
//cin >> GOAT;
Ronaldo (GOAT--){
cr7();
}
}
/*
$$$$$$$$\ $$$$$$$$\
$$ _____|\____$$ |
$$ | $$ /
$$$$$\ $$ /
$$ __| $$ /
$$ | $$ /
$$$$$$$$\ $$$$$$$$\
\________|\________|
*/
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |