#include<bits/stdc++.h>
using namespace std;
long long a[1505],f[1005][1005],d[1505],x,y,i,j,m,n,k,t,l;
long long print(long long i,long long j){
long long t,x;
if(j==0) return 0;
if(j==1){
cout<<1<<" "<<i<<endl;
return 0;
}
t=i;x=a[i];
while(x+a[t-1]<=f[k][m]){
x+=a[t-1];
t--;
}
print(t-1,j-1);
cout<<t<<" "<<i<<endl;
}
int main(){
cin>>m>>k;
for(i=1;i<=509;i++){
for(j=1;j<=509;j++){
f[i][j]=10000009;
}
}
for(j=1;j<=m;j++){
cin>>a[j];
d[j]=d[j-1]+a[j];
f[1][j]=d[j];
}
for(i=2;i<=k;i++){
for(j=1;j<=m;j++){
for(l=1;l<=j-1;l++){
if(max(f[i-1][l],d[j]-d[l])<f[i][j]){
f[i][j]=max(f[i-1][l],d[j]-d[l]);
}
}
}
}
print(m,k);
return 0;
}
为什么会RE呀!!!求助