记录编号 163888 评测结果 WWWWWWWWWW
题目名称 [IOI 1999] 花店橱窗 最终得分 0
用户昵称 Gravatar0 是否通过 未通过
代码语言 C++ 运行时间 0.004 s
提交时间 2015-05-27 08:18:33 内存使用 0.39 MiB
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cctype>
#include <algorithm>
 
using namespace std;
 
const int INF=-0x3fffffff;
 
int F,V;
int a[101][101];
int f[101][101];
int path[101][101];
int pa[101];
 
inline int in()
{
    char c=getchar();
    int x=0;
    while(c<'0'||c>'9')c=getchar();
    for(; c>='0'&&c<='9'; c=getchar())x=x*10+c-'0';
    return x;
}
 
void out(int i,int pos)
{
    if(i==1)
    {
        pa[i]=pos;
        return ;
    }
    out(i-1,path[i][pos]);
    pa[i]=pos;
}
 
int main()
{
	freopen("hana.in","r",stdin);
	freopen("hana.out","w",stdout);
    int i,j,k,l,p;
    F=in();V=in();
    for(i=1;i<=F;++i)
      for(j=1;j<=V;++j)
        a[i][j]=in(),f[i][j]=INF;
    for(i=1;i<=V-F+1;++i)
      f[1][i]=a[1][i],path[1][i]=i;
    for(i=1;i<=F;++i)
    {
      l=V-F+i; 
      for(j=i;j<=l;++j)
        for(k=j+1;k<=l+1;k++)
          if(f[i][j]+a[i+1][k]>f[i+1][k])
            f[i+1][k]=f[i][j]+a[i+1][k],path[i+1][k]=j;//通过j点到达      
    }
    p=F;
    for(i=p;i<=V;++i)
      if(f[F][i]>f[F][p])
        p=i;
    printf("%d\n",f[F][p]);
    out(F,p);
    for(i=1;i<=F;++i)
      printf("%d ",pa[i]);   
}