Submission #107897

#TimeUsernameProblemLanguageResultExecution timeMemory
107897SamAndSplit the sequence (APIO14_sequence)C++17
50 / 100
2045 ms132096 KiB
#include <bits/stdc++.h> using namespace std; const int N = 100005; const long long INF = 1000000009000000009; int n, m; int a[N]; long long p[N]; long long dp[N][202]; int pp[N][202]; int main() { //freopen("input.txt", "r", stdin); cin >> n >> m; for (int i = 1; i <= n; ++i) cin >> a[i]; for (int i = 1; i <= n; ++i) p[i] = p[i - 1] + a[i]; for (int i = 1; i <= n; ++i) { for (int k = 1; k <= m; ++k) dp[i][k] = -INF; } for (int i = 1; i <= n; ++i) { for (int k = 1; k <= min(m, i - 1); ++k) { for (int j = 1; j < i; ++j) { if (dp[j][k - 1] + p[j] * p[i] - p[j] * p[j] > dp[i][k]) { dp[i][k] = dp[j][k - 1] + p[j] * p[i] - p[j] * p[j]; pp[i][k] = j; } } } } cout << dp[n][m] << endl; int i = n; for (int k = m; k > 0; --k) { cout << pp[i][k] << ' '; i = pp[i][k]; } cout << endl; 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...