比赛 暑假培训七 评测结果 AAAAWWWWWW
题目名称 数塔 最终得分 40
用户昵称 bly1991 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-07-24 15:59:11
显示代码纯文本
program bly(input,output);
type
  t1=array[-2..100,-2..100] of longint;
  t2=array[1..100] of longint;
var
  a:t1;
  k,max,s:t2;
  i,j,x:longint;
  f1,f2:text;
  n,max0,k0,k1:longint;
begin
  assign(f1,'shuta.in');
  reset(f1);
  readln(f1,n);
  for i:=1 to n do begin
    for j:=1 to i do begin
      read(f1,a[i,j]);
    end;
  readln(f1);
  end;
  close(f1);
  for j:=1 to n do begin
    if a[n,j]>max0 then begin k0:=j; max0:=a[n,j]; end;
  end;
  inc(x); s[x]:=a[n,k0]; inc(x);
  for i:=n downto 1 do begin
    k[1]:=k0;
    max[1]:=max0+a[i-1,k0]+a[i-2,k[1]];
    k[2]:=k0;
    max[2]:=max0+a[i-1,k0]+a[i-2,k[2]-1];
    k[3]:=k0-1;
    max[3]:=max0+a[i-1,k0-1]+a[i-2,k[3]];
    k[4]:=k0-1;
    max[4]:=max0+a[i-1,k0-1]+a[i-2,k[4]-1];
    for j:=1 to 4 do begin
      if max[j]>max[5] then begin
         k1:=j; max[5]:=max[j];
      end;
    end;
    if k1>2 then k0:=k0-1;
    max0:=max0+a[i-1,k0]; s[x]:=a[i-1,k0]; inc(x);
    for j:=1 to 5 do max[j]:=0;
  end;
  assign(f2,'shuta.out');
  rewrite(f2);
  writeln(f2,max0);
  for i:=n downto 1 do begin
    write(f2,s[i]); write(f2,' ');
  end;
  close(f2);
end.