#include <bits/stdc++.h>
using namespace std;
const int N = 111111;
int n, k, pf[N], dp[N][202], r[N][202];
vector<int> ans;
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> k;
for(int i = 1;i<=n;i++){
cin >> pf[i];
pf[i] += pf[i - 1];
}
for(int s = 1;s<=k + 1;s++){
for(int i = 0;i<=n;i++){
for(int j = 0;j<i;j++){
if(dp[j][s - 1] + (pf[i] - pf[j]) * (pf[n] - pf[i]) >= dp[i][s]){
dp[i][s] = dp[j][s - 1] + (pf[i] - pf[j]) * (pf[n] - pf[i]);
r[i][s] = j;
}
}
}
}
int id = r[n][k + 1];
for(int i = k;i>0;i--){
ans.push_back(id);
id = r[id][i];
}
reverse(ans.begin(), ans.end());
cout << dp[n][k + 1] << '\n';
for(auto x : ans) cout << x << ' ';
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |