Submission #13756

#TimeUsernameProblemLanguageResultExecution timeMemory
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...