| 比赛 | 
    10101115 | 
    评测结果 | 
    AAAAAWWWWW | 
    | 题目名称 | 
    技能树 | 
    最终得分 | 
    50 | 
    | 用户昵称 | 
    王者自由 | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    Pascal | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2010-11-15 10:51:56 | 
显示代码纯文本
program skill;
const MAX=255;
var n,m,i,j,k:integer;
  A,P,S:array[-1..50,-1..50]of longint;
  F:array[-1..50,-1..50,-1..50]of longint;
procedure GMax(var x:longint;y:longint);
begin
  if x<y then x:=y;
end;
begin
  assign(input,'skill.in'); reset(input);
  assign(output,'skill.out'); rewrite(output);
  readln(n,m);
  fillchar(S,sizeof(S),0); fillchar(P,sizeof(P),0);
  for i:=1 to n do
    for j:=1 to n+1-i do
    begin
      read(A[i,j]);
      P[i,j]:=(i+1) div 2;
      S[i,j]:=S[i-2,j+1]+A[i,j];
    end;
  fillchar(F,sizeof(F),255);
  F[1,1,1]:=A[1,1];
  F[0,1,0]:=0;
  for j:=1 to n do
    for i:=0 to n-j+1 do
      for k:=0 to m do
        if F[i,j,k]<>-1 then
        begin
          GMax( F[i+1,j,k+P[i+1,j]] , F[i,j,k]+S[i+1,j] );
          if i=0 then GMax( F[i,j+1,k] , F[i,j,k] );
          GMax( F[i-1,j+1,k+P[i-1,j+1]] , F[i,j,k]+S[i-1,j+1] );
        end;
  writeln(F[0,n+1,m]);
  close(input); close(output);
end.