제출 #13756

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