Submission #1340454

#TimeUsernameProblemLanguageResultExecution timeMemory
1340454khangai11Split the sequence (APIO14_sequence)C++20
0 / 100
0 ms348 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
void solve(){
	int n,k;
	cin>>n>>k;
	vector<int> A(n),B(n+1,0);
	int D=0;
	for(int a=0;a<n;a++){
		cin>>A[a];
		D+=A[a];
		B[a+1]=D;
	}
	vector<vector<int>> dp(n+1,vector<int>(k+2,-1));
	vector<vector<int>> dp1(n+1,vector<int>(k+2));
	dp[0][0]=D*D;
	for(int a=0;a<n;a++){
		for(int b=0;b<=k;b++){
			if(dp[a][b]==-1){
				continue;
			}
			for(int c=a+1;c<=n;c++){
//				dp[c][b+1]=max(dp[c][b+1],dp[a][b]-(B[c]-B[a])*(B[c]-B[a]));
				if(dp[c][b+1]<dp[a][b]-(B[c]-B[a])*(B[c]-B[a])){
					dp1[c][b+1]=a;
					dp[c][b+1]=dp[a][b]-(B[c]-B[a])*(B[c]-B[a]);
				}
			}
		}
	}
	cout<<dp[n][k+1]/2<<endl;
	vector<int> v;
	int i=dp1[n][k+1],j=k;
	v.push_back(i+1);
	for(j--;j>0;j--){
		i=dp1[i][j];
		v.push_back(i+1);
	}
	reverse(v.begin(),v.end());
	for(auto z:v){
		cout<<z<<" ";
	}
	cout<<endl;
}
signed main(){
	ios::sync_with_stdio();
	cin.tie(0);
	cout.tie(0);
//	freopen("a.in", "r", stdin);
//	freopen("a.out", "w", stdout);
	ll t=1;
//	cin>>t;
	for(ll a=0;a<t;a++){
		solve();
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...