# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1279409 | ducanh0811 | Growing Vegetables is Fun 4 (JOI21_ho_t1) | C++20 | 1 ms | 572 KiB |
#include <bits/stdc++.h>
#define int long long
#define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; ++i)
#define REV(i, a, b) for (int i = (a), _b = (b); i >= _b; --i)
using namespace std;
#define MAXN 200002
int pref[MAXN];
int suff[MAXN];
int lastpre[MAXN];
int lastsuf[MAXN];
int a[MAXN];
int b[MAXN];
int n;
void solve(){
cin >> n;
FOR(i, 1, n){
cin >> a[i];
b[i] = a[i];
}
int sum = 0;
FOR(i, 2, n){
b[i] += sum;
pref[i] += pref[i - 1];
lastpre[i] = lastpre[i - 1];
if (b[i] <= b[i - 1]){
int val = (b[i - 1] - b[i] + 1);
b[i] += val;
sum += val;
pref[i] += val;
lastpre[i] = val;
}
}
FOR(i, 1, n) b[i] = a[i];
sum = 0;
REV(i, n - 1, 1){
b[i] += sum;
suff[i] += suff[i + 1];
lastsuf[i] = lastsuf[i + 1];
if (b[i] <= b[i + 1]) {
int val = (b[i + 1] - b[i] + 1);
b[i] += val;
sum += val;
suff[i] += val;
lastsuf[i] = val;
}
}
int res = 1e15;
FOR(i, 1, n - 1){
res = min(res, pref[i] + suff[i + 1] - min(lastpre[i], lastsuf[i + 1]));
}
cout << res;
}
#define task ""
int32_t main(){
if (fopen(task".inp","r")){
freopen(task".inp","r",stdin);
freopen(task".out","w",stdout);
}
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
solve();
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |