记录编号 |
79996 |
评测结果 |
AAAAAAAAAA |
题目名称 |
垃圾陷阱 |
最终得分 |
100 |
用户昵称 |
赵赵赵 |
是否通过 |
通过 |
代码语言 |
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.