Submission #1365212

#TimeUsernameProblemLanguageResultExecution timeMemory
1365212vjudge1Split the sequence (APIO14_sequence)C++20
50 / 100
2076 ms32684 KiB
#include"bits/stdc++.h"
using namespace std;
#define int long long
#define S second
#define F first
const int mxn=10005;
const int mxk=205;
int a[mxn],p[mxn],dp[mxn][mxk],pr[mxn][mxk];
signed main(){
	cin.tie(0)->sync_with_stdio(0);
	int n,k;
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		p[i]=p[i-1]+a[i];
	}
	for(int j=1;j<=k;j++){
		for(int i=j+1;i<=n;i++){
			for(int l=j;l<i;l++){
				dp[i][j]=max(dp[i][j],dp[l][j-1]+(p[i]-p[l])*p[l]);
			}
			for(int l=j;l<i;l++){
				if(dp[i][j]==dp[l][j-1]+(p[i]-p[l])*p[l]){
					pr[i][j]=l;
					break;
				}
			}
		}
	}
	cout<<dp[n][k]<<'\n';
	vector<int>v;
	while(k){
		v.push_back(pr[n][k]);
		n=pr[n][k];
		k--;
	}
	sort(v.begin(),v.end());
	for(int i:v)cout<<i<<' ';
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...