This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/// tree bends in youth
/// 1.10.2023
/// success is doing same thing in every single day!!!
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define all(x) x.begin(), x.end()
#define F first
#define S second
using namespace std;
const ll N =1e5 + 5;
const ll NN = 2e5;
const ll INF = 1e9;
const ll MOD = 1e9 + 7;
int a[N];
int dp[1005][205];
int pre[1005],suf[1005];
void solve(){
int n,k;
cin >> n >> k;
for(int i = 1;i <= n;i++){
cin >> a[i];
pre[i] = pre[i - 1] + a[i];
}
for(int i=n;i>0;i--){
suf[i]=suf[i+1]+a[i];
if(i < n)dp[i][1] = pre[i] * suf[i + 1];
}
int mx = 0;
for(int i = 2;i <= k;i++){
for(int j = i;j <= n;j++){
for(int g = 1;g < j;g++){
int z = pre[j] - pre[g];
int x = pre[n] - pre[j];
dp[j][i] = max(dp[j][i],dp[g][i - 1] + (z * x));
mx = max(mx,dp[j][i]);
}
}
}
cout << mx << '\n';
int i =k,l = 0;
for(int j = 1;j<=n;j++){
if(dp[j][i] == mx){
l = j;
}
}
i--;
cout << l << ' ';
while(i > 0){
for(int j = l - 1;j >= 1;j--){
int z = pre[l] - pre[j],x = pre[n] - pre[l];
if((z * x) + dp[j][i] == dp[l][i + 1]){
l = j;
break;
}
}
cout << l << ' ';
i--;
}
}
main (){
ios_base::sync_with_stdio(0);
cin.tie(0);
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
ll abd= 1;
//cin >> abd;
for(ll i = 1;i <= abd;i++){
// cout << "Case " << i << ": ";
solve();
}
}
Compilation message (stderr)
sequence.cpp:61:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
61 | main (){
| ^~~~
# | 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... |