Submission #1326548

#TimeUsernameProblemLanguageResultExecution timeMemory
1326548tkm_algorithmsGrowing Vegetables is Fun 4 (JOI21_ho_t1)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define int ll using P = pair<int, int>; #define all(x) x.begin(), x.end() #define rep(x,s,e) for (auto x=(s)-((s)>(e));x!=(e)-((s)>(e));((s)<(e)?x++:x--)) #define sz(x) (int)x.size() const char nl = '\n'; const int mod = 998244353; void solve() { int n; cin >> n; vector<int> a(n+2); rep(i, 1, n+1)cin >> a[i]; vector<int> inc(n+1), dec(n+2); inc[1] = a[1], dec[n] = a[n]; int mx1 = a[1], mx2 = a[n]; rep(i, 2, n+1) { inc[i] = max(a[i], mx1+1); mx1 = max(mx1, inc[i]); } rep(i, n, 1) { dec[i] = max(a[i], mx2+1); mx2 = max(mx2, dec[i]); } vector<int> p(n+2), s(n+2); rep(i, 2, n+1) { int x = inc[i]-a[i]; if (x <= inc[i-1]-a[i-1])p[i] = 0; else p[i] = x-inc[i-1]+a[i-1]; p[i] += p[i-1]; } rep(i, n, 1) { //cout << i << " "; int x = dec[i]-a[i]; if (x <= dec[i+1]-a[i+1])s[i] = 0; else s[i] = x-dec[i+1]+a[i+1]; s[i] += s[i+1]; } //for (auto i: inc)cout << i << " "; //cout << nl; //for (auto i: dec)cout << i << " "; //cout << nl; int res = min(p[n], s[1]); //cout << p[n] << " " << s[1] << nl; rep(i, 1, n+1) { // increase till i, decrease after int x = max(dec[i], inc[i]); int sm = p[i-1]+s[i+1]; sm += max(0ll, x-a[i]-(inc[i-1]-a[i-1]+dec[i+1]-a[i+1])); res = min(res, sm); //if (sm == 0)cout << i << nl; } cout << res << nl; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...