68 lines
1.4 KiB
Plaintext
68 lines
1.4 KiB
Plaintext
program well;
|
|
const
|
|
maxd=125;
|
|
maxh=4010;
|
|
var
|
|
d,g:integer;
|
|
t,f,h:array[1..100]of integer;
|
|
a :array[0..maxd,1..maxh]of boolean;
|
|
|
|
procedure swap(var a,b:integer);
|
|
var c:integer;
|
|
begin
|
|
c:=a;a:=b;b:=c;
|
|
end;
|
|
|
|
procedure init;
|
|
var k,i,j:integer;
|
|
begin
|
|
readln(d,g);
|
|
for k:=1 to g do readln(t[k],f[k],h[k]);
|
|
for i:=1 to g-1 do
|
|
for j:=i+1 to g do
|
|
if t[i]>t[j] then
|
|
begin
|
|
swap(t[i],t[j]);
|
|
swap(f[i],f[j]);
|
|
swap(h[i],h[j]);
|
|
end;
|
|
end;
|
|
|
|
procedure main;
|
|
var
|
|
k,i,j,mh:integer;
|
|
begin
|
|
mh:=0;
|
|
for i:=1 to g do if t[i]>mh then mh:=t[i];
|
|
inc(mh,10);
|
|
for i:=1 to g do inc(mh,f[i]);
|
|
fillchar(a,sizeof(a),0);
|
|
a[0,10]:=true;
|
|
for k:=1 to g do
|
|
for i:=d-1 downto 0 do
|
|
for j:=mh downto t[k] do
|
|
if a[i,j] then
|
|
begin
|
|
a[i+h[k]][j]:=true;
|
|
if (i+h[k]>=d) then
|
|
begin
|
|
writeln(t[k]);
|
|
exit;
|
|
end;
|
|
a[i][j+f[k]]:=true;
|
|
end;
|
|
for j:=mh downto 1 do if a[0,j] then
|
|
begin writeln(j); exit end;
|
|
end;
|
|
|
|
begin
|
|
assign(input,'well.in');
|
|
reset(input);
|
|
assign(output,'well.out');
|
|
rewrite(output);
|
|
init;
|
|
main;
|
|
close(input);
|
|
close(output);
|
|
end.
|