# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1089808 | 2024-09-17T07:37:34 Z | Pekiban | Candies (JOI18_candies) | C++17 | 93 ms | 556 KB |
#include <bits/stdc++.h> using namespace std; using ll = long long; #define pb push_back vector<ll> mxconv(vector<ll> &a, vector<ll> &b) { int n = a.size(), m = b.size(); vector<ll> c(n+m); c[0] = 0; int i = 1, j = 1; while (i < n || j < m) { if (i == n) ++j; else if (j == m) ++i; else { if (a[i] - a[i-1] > b[j] - b[j-1]) ++i; else ++j; } c[i+j-2] = a[i-1] + b[j-1]; } return c; } vector<ll> dq(vector<ll> &a) { int n = a.size(); if (n == 0) return {0}; if (n == 1) return {0, a[0]}; vector<ll> L, R; for (int i = 0; i < n/2; ++i) L.pb(a[i]); for (int i = n/2; i < n; ++i) R.pb(a[i]); reverse(R.begin(), R.end()); auto A = dq(L); L.pop_back(); auto B = dq(L); auto C = dq(R); R.pop_back(); auto D = dq(R); auto E = mxconv(A, D); auto F = mxconv(C, B); for (int i = 0; i < E.size(); ++i) E[i] = max(E[i], F[i]); return E; } // proof by ac lol int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector<ll> a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } auto ans = dq(a); for (int i = 1; i <= (n+1)/2; ++i) { cout << ans[i] << '\n'; } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 93 ms | 556 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 93 ms | 556 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |