Submission #99880

#TimeUsernameProblemLanguageResultExecution timeMemory
99880WLZSplit the sequence (APIO14_sequence)C++17
28 / 100
2068 ms24864 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int n, k; cin >> n >> k; vector<long long> a(n + 1); vector<long long> pre(n + 1, 0); for (int i = 1; i <= n; i++) { cin >> a[i]; pre[i] = pre[i - 1] + a[i]; } vector< vector<long long> > dp(n + 1, vector<long long>(k + 1, 0)); vector< vector<int> > from(n + 1, vector<int>(k + 1, -1)); for (int i = 1; i <= n; i++) { for (int t = 1; t <= k; t++) { for (int j = 1; j < i; j++) { if (dp[j][t - 1] + (pre[i] - pre[j]) * pre[j] > dp[i][t]) { dp[i][t] = dp[j][t - 1] + (pre[i] - pre[j]) * pre[j]; from[i][t] = j; } } } } cout << dp[n][k] << '\n'; int cur = from[n][k], cnt = 1; vector<int> v; while (cur != -1) { v.push_back(cur); cur = from[cur][k - cnt++]; } reverse(v.begin(), v.end()); for (auto& x : v) { cout << x << ' '; } 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...