记录编号 248011 评测结果 AAAAAAAAAA
题目名称 书的复制 最终得分 100
用户昵称 Gravatar521 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-04-09 22:10:16 内存使用 0.00 MiB
显示代码纯文本
#include<stdio.h>
int a[505][505]={0},b[505]={0},c[505][2]={0};
int min(int x,int y){if(x>y)return y;else return x;}
int max(int x,int y){if(x<y)return y;else return x;}
void sh(int q,int m,int n)
{
	if(m==0)return;
	int N=n;
	while(q>=b[N]-b[n]&&n>=0) n--;
	c[m][0]=n+2; c[m][1]=N;
	sh(q,m-1,n+1);
	return;
}
int _521()
{
	freopen("books.in","r",stdin);
	freopen("books.out","w",stdout);
	int i,j,k,n,m;
	scanf("%d%d",&n,&m);
	for(i=1;i<=m;i++)
	  for(j=1;j<=n;j++)
		a[i][j]=1000000;
	for(i=1;i<=n;i++)
	{
		scanf("%d",&j);
		b[i]=b[i-1]+j;
		a[1][i]=b[i];
	}
	for(i=2;i<=m;i++)
	  for(j=1;j<=n;j++)
	    for(k=1;k<j;k++)
	      a[i][j]=min(max(a[i-1][k],b[j]-b[k]),a[i][j]);
	sh(a[m][n],m,n);
	for(i=1;i<=m;i++)
	  printf("%d %d\n",c[i][0],c[i][1]);
	return 0;
}
int _520=_521();
int main(){;}