제출 #13753

#제출 시각아이디문제언어결과실행 시간메모리
13753cometSplit the sequence (APIO14_sequence)C++98
0 / 100
0 ms41512 KiB
#include<cstdio>
int d[2][100010],s[100010];
short r[201][100001],n,k;
void f(int x,int y){
	if(r[x][y]==0)return;
	f(x-1,r[x][y]);
	printf("%d ",r[x][y]);
}
int main(){
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++){
		scanf("%d",&s[i]);
		s[i]+=s[i-1];
	}
	for(int i=1;i<=n;i++)d[1][i]=s[i]*(s[n]-s[i]);
	for(int g=2;g<=k+1;g++){
		for(int i=g;i<=n;i++){
			for(int j=1;j<i;j++){
				if(d[g%2][i]<=d[(g+1)%2][j]+(s[i]-s[j])*(s[n]-s[i])){
					d[g%2][i]=d[(g+1)%2][j]+(s[i]-s[j])*(s[n]-s[i]);
					r[g][i]=j;
				}
			}
		}
	}
	printf("%d\n",d[(k+1)%2][n]);
	f(k+1,n);
}
#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...