记录编号 163926 评测结果 AAAAAAAAAA
题目名称 [IOI 1999] 花店橱窗 最终得分 100
用户昵称 Gravatar0 是否通过 通过
代码语言 C++ 运行时间 0.009 s
提交时间 2015-05-27 09:18:37 内存使用 0.43 MiB
显示代码纯文本
#include<cstdio>

using namespace std;

int n,m,a[110][110],f[110][110],pre[110][110];

void out(int i,int j)
{
	if(i==1)
		if(pre[i][j]==j)
		{
			printf("%d ",j);
			return;
		}
	else
	    out(1,pre[i][j]);
	out(i-1,pre[i][j]);
	printf("%d ",j);
}

int main()
{
	freopen("hana.in","r",stdin);
	freopen("hana.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			f[i][j]=-0x3fffffff;
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			scanf("%d",&a[i][j]);
			pre[i][j]=j;
		}
	}
	for(int j=1;j<=m;j++)
	{
		f[1][j]=a[1][j];
		if(j>1&&f[1][j]<f[1][j-1])
		{
			f[1][j]=f[1][j-1];
			pre[1][j]=pre[1][j-1];
		}
	}
	for(int i=2;i<=n;i++)
	{
		for(int k=i;k<=m;k++)
		{
			for(int j=k;j<=m;j++)
			{
				if(f[i][j]<f[i-1][k-1]+a[i][j])
				{
					f[i][j]=f[i-1][k-1]+a[i][j];
					pre[i][j]=k-1;
				}
			}
		}
	}
	int last,MAX=-0x3fffffff;
	for(int i=1;i<=m;i++)
	{
		if(MAX<f[n][i])
		{
			MAX=f[n][i];
			last=i;
		}
	}
	/*for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			printf("%d ",f[i][j]);
		}
		printf("\n");
	}
	printf("%d%d\n",f[n][m],pre[n][m]);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			printf("%d ",pre[i][j]);
		}
		printf("\n");
	}*/
	printf("%d\n",MAX);
	out(n,last);
	return 0;
}