记录编号 22149 评测结果 AAAAAAAAAA
题目名称 物品 最终得分 100
用户昵称 Gravatarmaxiem 是否通过 通过
代码语言 Pascal 运行时间 0.232 s
提交时间 2010-11-17 14:49:10 内存使用 0.17 MiB
显示代码纯文本
program magica;
var
  data:array [1..5000,1..2] of longint;
  f:array [0..5000] of longint;
  sum,tmp,m,i,j,p,p1,p2,n:longint;
begin
  assign (input,'magica.in');
  reset (input);
  readln (n,p);
  for i:=1 to n do begin
    read (p1);sum:=sum+p1;
	if eoln(input) then begin
          m:=m+p1;
          data[i,1]:=p1;
          data[i,2]:=p+p1;
        end
        else begin
	  read (p2);
	  if p1+p>=p2 then begin
            m:=m+p1;
            data[i,1]:=p1;
            data[i,2]:=p1+p;
          end
          else begin
                data[i,1]:=p1;
		data[i,2]:=p2;
                m:=m+p2-p;
	  end;
	end;
  end;
  close (input);
  assign (output,'magica.out');
  rewrite (output);
  if sum<p then begin
    writeln (sum);
    close (output);
    halt;
  end;
  f[0]:=0;
  for i:=1 to p do f[i]:=1000000000;
  for i:=1 to n do
    for j:=p downto 0 do begin
	  tmp:=j+data[i,1];
	  if tmp>p then tmp:=p;
	  if f[tmp]>f[j]+data[i,2]-p-data[i,1] then f[tmp]:=f[j]+data[i,2]-p-data[i,1];
	end;
  writeln (m-f[p]);
  close (output);
end.