제출 #1311420

#제출 시각아이디문제언어결과실행 시간메모리
1311420madamadam3Growing Vegetables is Fun 4 (JOI21_ho_t1)C++20
0 / 100
1 ms572 KiB
// what the fuck? #include <bits/stdc++.h> using namespace std; #define int long long int signed main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) cin >> a[i]; vector<int> f(n), r(n); f[0] = r[n-1] = 0; for (int i = 1; i < n; i++) { int dx = (a[i-1] + f[i-1] + 1) - (a[i]); f[i] = max(0LL, dx); int dy = (a[n-i] + r[n-i] + 1) - (a[n-i-1]); r[n-i-1] = max(0LL, dy); } vector<int> DP1(n+1, 0); for (int i = 0; i <= n; i++) { // int mx = 0; // vector<int> f2(n); for (int j = 0; j < n; j++) f2[j] = (j < i ? f[j] : r[j]), mx = max(mx, f2[j]); // vector<int> pos(n); iota(pos.begin(), pos.end(), 0); sort(pos.begin(), pos.end(), [&](int x, int y) {return f2[x] < f2[y];}); // int t = 0, s = 0, segments = 1; vector<int> f2(n); for (int j = 0; j < n; j++) f2[i] = (j < i ? f[i] : r[i]); int t = 0, s = accumulate(f2.begin(), f2.end(), 0); // while (s > 0) { // int best = -1, l = -1, r = -1, prev = -1; // for (int j = 0; j <= n; j++) { // if (f2[j] != 0 && j != n) continue; // if (j-prev > best) { // best = j-prev; l = prev; r = j; // } // prev = j; // } // for (int j = l+1; j < r; j++) { // s--; f2[j]--; // } // t++; // } // DP1[i] = t; DP1[i] = s; } cout << *max_element(DP1.begin(), DP1.end()); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...