| 比赛 | 
    10101115 | 
    评测结果 | 
    AAAAAAAWWW | 
    | 题目名称 | 
    技能树 | 
    最终得分 | 
    70 | 
    | 用户昵称 | 
    maxiem | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    Pascal | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2010-11-15 11:31:20 | 
显示代码纯文本
program skill;
var
  f:array [0..51,0..51,0..500] of longint;
  ans,tmp,n,m,i,j,a,k:longint;
  table,t,c,s:array [0..50,0..50] of longint;
begin
  assign (input,'skill.in');
  reset (input);
  readln (n,m);
  fillchar (c,sizeof(c),0);
  fillchar (s,sizeof(s),0);
  fillchar (t,sizeof(t),0);
  for i:=1 to n do begin;
    for j:=1 to n-i+1 do begin
	  read (table[i,j]);
	  s[i,j]:=s[i-1,j]+table[i,j];
	  c[i,j]:=c[i-1,j]+1;
	end;
	readln;
  end;
  fillchar (f,sizeof(f),0);
  for i:=1 to n do f[i,1,i]:=s[i,1];
  t[1,1]:=table[1,1];
  close (input);
  assign (output,'skill.out');
  rewrite (output);
  for j:=2 to n do begin
    for k:=0 to m do t[j,k]:=t[j-1,k];
	for i:=1 to n-j+1 do begin
	  a:=c[i,j];
	  for k:=a to m do begin
	    tmp:=f[i+1,j-1,k-a]+s[i,j];
     	if (i>1) then if tmp<f[i-1,j,k-1]+table[i,j] then tmp:=f[i-1,j,k-1]+table[i,j];
	if (i=1) then if tmp<t[j-1,k-1]+table[i,j] then tmp:=t[j-1,k-1]+table[i,j];
        f[i,j,k]:=tmp;
        if (i=1) then if t[j,k]<f[i,j,k] then t[j,k]:=f[i,j,k];
	  end;
	end;
  end;
  ans:=0;
  for i:=1 to n do if f[1,i,m]>ans then ans:=f[1,i,m];
  writeln (ans);
  close (output);
end.