이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int maxn = 1000 + 10;
int a[maxn], par[maxn], dp[maxn][maxn], m[maxn][maxn];
int sum(int fi, int se){
if (fi > se)
return 0;
return par[se] - par[fi - 1];
}
int main(){
ios_base::sync_with_stdio (false);
int n, k;
cin >> n >> k;
k ++;
for (int i = 1; i <= n; i++){
cin >> a[i];
par[i] = par[i - 1] + a[i];
}
memset(dp, -63, sizeof dp);
dp[0][0] = 0;
for (int i = 1; i <= k; i++){
for (int j = 1; j <= n; j++){
for (int x = j - 1; x >= 0; x--){
int tmp = dp[i][j];
dp[i][j] = max(dp[i][j], dp[i - 1][x] + sum(1, x) * sum(x + 1, j));
if (tmp != dp[i][j])
m[i][j] = x;
}
}
}
cout << dp[k][n] << endl;
int q = m[k][n];
int idx = k - 1;
while (q != 0){
cout << q << " ";
q = m[idx--][q];
}
}
# | 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... |