记录编号 |
163926 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[IOI 1999] 花店橱窗 |
最终得分 |
100 |
用户昵称 |
0 |
是否通过 |
通过 |
代码语言 |
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;
}