#include "bits/stdc++.h"
using namespace std;
#define ll long long
#define SZ(s) (ll)s.size()
int main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr);
int n, k;
cin >> n >> k;
vector <ll> a(n+1), p(n+1, 0);
for(int i = 1; i <= n; i++) {
cin >> a[i];
p[i] = p[i-1] + a[i];
}
vector <vector <ll>> dp(n + 1, vector <ll> (k + 1, 0)), par(n + 1, vector <ll> (k + 1, 0));
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= k; j++) {
par[i][j] = i-1;
}
}
for(int i = 1; i <= n; i++) {
for(int j = i-1; j >= 0; j--) {
for(int k1 = 0; k1 < k; k1++) {
ll x = (p[i] - p[j]) * p[j] + dp[j][k1];
if(x > dp[i][k1+1]) {
dp[i][k1+1] = x;
par[i][k1+1] = j;
}
// dp[i][k1+1] = max(dp[i][k1+1], );
}
}
}
cout << dp[n][k] << '\n';
int y = n;
while(y) {
y = par[y][k];
if(y == 0) break;
k--;
cout << y << ' ';
}
return 0;
}
# | 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... |