Submission #655270

#TimeUsernameProblemLanguageResultExecution timeMemory
655270benjaminkleynSplit the sequence (APIO14_sequence)C++17
28 / 100
2096 ms74692 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; int N, K, a[100001]; ll pref[100001] = {0}; ll dp[100001][201]; int last_split[100001][201]; int main() { cin >> N >> K; for (int i = 1; i <= N; i++) { cin >> a[i]; pref[i] = pref[i-1] + a[i]; } for (int k = 1; k <= K; k++) for (int i = 1; i <= N; i++) { dp[i][k] = 0; for (int j = 0; j < i; j++) if (dp[j][k-1]+pref[j]*(pref[i]-pref[j])>dp[i][k]) { dp[i][k] = dp[j][k-1] + pref[j] * (pref[i] - pref[j]); last_split[i][k] = j; } } cout << dp[N][K] << '\n'; int i = N; do { i = last_split[i][K--]; cout << i << ' '; } while (last_split[i][K] > 0); 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...