记录编号 79996 评测结果 AAAAAAAAAA
题目名称 垃圾陷阱 最终得分 100
用户昵称 Gravatar赵赵赵 是否通过 通过
代码语言 Pascal 运行时间 0.005 s
提交时间 2013-11-06 17:03:48 内存使用 0.18 MiB
显示代码纯文本
var
 a:array[1..100,1..3]of integer;
 f:array[0..100,0..100]of integer;
 Y,ans,d,g,i,j:integer;
 p:boolean;
  procedure sort(l,r: integer);
      var
         i,j,x: integer;
      begin
         i:=l;
         j:=r;
         x:=a[(l+r) div 2,1];
         repeat
           while a[i,1]<x do
            inc(i);
           while x<a[j,1] do
            dec(j);
           if not(i>j) then
             begin
                y:=a[i,1];a[i,1]:=a[j,1];a[j,1]:=y;
                y:=a[i,2];a[i,2]:=a[j,2];a[j,2]:=y;
                y:=a[i,2];a[i,2]:=a[j,2];a[j,2]:=y;
                inc(i);
                j:=j-1;
             end;
         until i>j;
         if l<j then
           sort(l,j);
         if i<r then
           sort(i,r);
      end;
begin
 assign(input,'well.in');reset(input);
 assign(output,'well.out');rewrite(output);
 readln(d,g);
 for i:=1 to g do readln(a[i,1],a[i,2],a[i,3]);
 sort(1,g);
 fillchar(f,sizeof(f),255);
 f[0,0]:=10;ans:=10;
 if a[g,1]=13 then begin writeln(a[g,1]);close(input);close(output);halt;end;
 for i:=1 to g do
 begin
  p:=true;
  if ans>=a[i,1] then inc(ans,a[i,2]);
  for j:=0 to d do
  begin
   if (j-a[i,3]>=0)and(f[i-1,j-a[i,3]]>f[i,j])and(f[i-1,j-a[i,3]]>=a[i,1]) then begin f[i,j]:=f[i-1,j-a[i,3]];p:=false;end;
   if (f[i-1,j]>=0)and(f[i-1,j]+a[i,2]>f[i,j])and(f[i-1,j]>=a[i,1]) then begin f[i,j]:=f[i-1,j]+a[i,2];p:=false;end;
  end;
  if f[i,d]>=a[i,1] then begin writeln(a[i,1]);close(input);close(output);halt;end;
  if p then break;
 end;
 writeln(ans);
 close(input);close(output);
end.