Submission #1166101

#TimeUsernameProblemLanguageResultExecution timeMemory
1166101JelalTkm수열 (APIO14_sequence)C++20
0 / 100
1 ms324 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O3") #pragma GCC target ("sse4") using namespace std; #define int long long int const int N = 1e5 + 10; const int md = 1e9 + 7; const int INF = 1e18; int32_t main(int32_t argc, char *argv[]) { ios::sync_with_stdio(false); cin.tie(nullptr); int T = 1; // cin >> T; while (T--) { int n, k; cin >> n >> k; k++; vector<int> a(n + 1), pref(n + 1); for (int i = 1; i <= n; i++) { cin >> a[i]; pref[i] = pref[i - 1] + a[i]; } vector<vector<int>> sm(n + 1, vector<int> (n + 1)); for (int i = 1; i <= n; i++) { sm[i][i] = a[i]; for (int j = i + 1; j <= n; j++) { int l = i, r = j; while (r - l > 1) { int mid = (l + r) >> 1; if ((pref[l] - pref[i - 1]) > (pref[j] - pref[l])) r = mid; else l = mid; } sm[i][j] = (pref[l] - pref[i - 1]) * (pref[j] - pref[l]); sm[i][j] = max(sm[i][j], (pref[l + 1] - pref[i - 1]) * (pref[j] - pref[l + 1])); } } vector<vector<int>> dp(n + 1, vector<int> (k + 1)); for (int q = 1; q <= k; q++) { for (int i = q; i <= n; i++) { for (int j = i - 1; j > (q - 1); j--) { dp[i][q] = max(dp[i][q], dp[j - 1][q - 1] + sm[i][j] + (pref[j - 1] * (pref[i] - pref[j - 1]))); } } } cout << dp[n][k] << '\n'; vector<int> ans; int i = n, q = k; int cnt = 0; while (q > 1) { cnt++; for (int j = i - 1; j > (q - 1); j--) { if (dp[i][q] == (dp[j - 1][q - 1] + sm[i][j] + (pref[j - 1] * (pref[i] - pref[j - 1])))) { ans.push_back(j - 1); q--, i = j - 1; break; } } } reverse(ans.begin(), ans.end()); for (int i = 0; i < (k - 1); i++) cout << ans[i] << " "; cout << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...