记录编号 418613 评测结果 AAAAAAAAAA
题目名称 [IOI 1994] 数塔 最终得分 100
用户昵称 GravatarJustWB 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2017-06-30 21:47:32 内存使用 0.34 MiB
显示代码纯文本
#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
inline int get()
{
	int t=0,jud=1;char c=getchar();
	while(!isdigit(c))
	{
		if(c=='-')jud=-1;
		c=getchar();
	}
	while(isdigit(c))
	{
		t=(t<<3)+(t<<1)+c-'0';
		c=getchar();
	}
	return t*jud;
}
int n;
int N_a[81][81],N_b[81][81];
int num;
inline int search(int a,int b)
{
	if(a==1)return N_b[a][b];
	else if(b==1)printf("%d ",search(a-1,b));
	else if(a==b)printf("%d ",search(a-1,b-1));
	else
	{
		if(N_b[a-1][b-1]>=N_b[a-1][b])printf("%d ",search(a-1,b-1));
		else printf("%d ",search(a-1,b));
	}
	return N_a[a][b];
}
int main()
{
	freopen("shuta.in","r",stdin);
	freopen("shuta.out","w",stdout);
	n=get();
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=i;j++)
		{
			N_a[i][j]=get();
		}
	}
	N_b[1][1]=N_a[1][1];
	for(int i=2;i<=n;i++)
	{
		for(int j=1;j<=i;j++)
		{
			if(j==1)N_b[i][j]=N_b[i-1][j]+N_a[i][j];
			else if(j==i)N_b[i][j]=N_b[i-1][j-1]+N_a[i][j];
			else N_b[i][j]=max(N_b[i-1][j],N_b[i-1][j-1])+N_a[i][j];
		}
	}
	for(int i=1;i<=n;i++)if(N_b[n][i]>N_b[n][num])num=i;
	printf("%d\n",N_b[n][num]);
	printf("%d ",search(n,num));
	return 0;
}