# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1243353 | Bui_Quoc_Cuong | Growing Vegetables is Fun 4 (JOI21_ho_t1) | C++20 | 61 ms | 328 KiB |
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define fi first
#define se second
#define uni(a) sort(ALL(a)),a.resize(unique(ALL(a))-a.begin())
#define FOR(i,a,b) for(int i=(int)(a);i<=(int)(b);i++)
#define FORD(i,a,b) for(int i=(int)(a);i>=(int)(b);i--)
#define FORN(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define ALL(a) a.begin(),a.end()
#define tct template<class T>
tct bool mini(T& a,T b){return (a>b)?a=b,1:0;}
tct bool maxi(T& a,T b){return (a<b)?a=b,1:0;}
const long long INF = 1e18, base = 311, mod = 1e9 + 7;
const int maxn = 1e6 + 5,oo = 2e9, LG = 20;
int n;
int a[maxn], h[maxn];
void process(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
ll ans = 1e18;
FOR(i, 1, n){
vector <int> left, right;
for(int j = 1; j <= i; j++){
if(a[j] <= a[j - 1]) left.push_back(a[j - 1] + 1 - a[j]);
}
for(int j = n; j >= i; j--){
if(a[j] <= a[j + 1]) right.push_back(a[j + 1] + 1 - a[j]);
}
sort(ALL(left)); sort(ALL(right));
reverse(ALL(left)); reverse(ALL(right));
ll sum = 0;
int l = 0, r = 0;
for(; r < (int)right.size(); r++){
if(l > (int)left.size() - 1) break;
sum+= max(right[r], left[l]);
l++;
}
for(; l < (int)left.size(); l++) sum+= left[l];
for(; r < (int)right.size(); r++) sum+= right[r];
ans = min(ans, sum);
}
cout << ans;
}
signed main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
#define taskname "kieuoanh"
if(fopen(taskname".inp", "r")){
freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout);
}
process();
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |