谢谢
#include<bits/stdc++.h>
using namespace std;
int m,k,f[600][501],a[1010],sum[1010],start[600],ed[600],dp[500][500],l[1001],mem;
int main(){
memset(dp,63,sizeof(dp)) ;
cin>>k>>m;// k->books 9 3
for(int i=1;i<=k;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
f[1][i]=sum[i];
// cout<<sum[i]<<'.';
}
int ans=9999999;
// cout<<endl;
f[0][0]=0;
for(int i=1;i<=m;i++){
ans=9999999;
int count=1;
for(int j=1;j<=k;j++){
int temp=f[i][j];
for(int x=1;x<j;x++){
// ans=999999;
// cout<<f[i][j]<<" ";
int temp=dp[i][j];
f[i][j]=max(sum[j]-sum[j-x-1],f[i-1][j-x]);
dp[i][j]=min(f[i][j],dp[i][j]);
// cout<<dp[3][9]<<" ";
}
f[i][j]=dp[i][j];
//cout<<endl;
} }
int y=f[m][k];
int he=0,count=m;
start[m+1]=k+1;
for(int i=k;i>=1;i--){
he+=a[i];
if(he>y){
start[count]=i+1;
ed[count]=start[count+1]-1;count--;he=0;continue;
}
if(he==y) {
start[count]=i;
ed[count]=start[count+1]-1;count--;he=0;continue;
}
}
cout<<1<<" "<<start[2]-1<<endl;
for(int i=2;i<=m;i++){
cout<<start[i]<<" "<<ed[i]<<endl;
}
return 0;
}
谢谢