oopp 2009-09-17 02:07:00
点我顶贴
收藏
删除
var a,b:array[1..60,0..3] of longint;
jl:array[1..60] of integer;
f,r,t:array[0..32000] of longint;
k,i,j,m,n,v,d,p,l:longint;
begin
read(m,n);
for i:=1 to n do begin
read(v,d,l);
if l=0 then begin
inc(k);
a[k,0]:=v;
b[k,0]:=v*d;
end
else
begin
if a[l,1]<>0 then begin
a[l,2]:=v+a[l,0];
b[l,2]:=v*d+b[l,0];
jl[l]:=2;
end
else begin
a[l,1]:=v+a[l,0];
b[l,1]:=v*d+b[l,0];
jl[l]:=1;
end;
end;
end;
for i:=1 to k do
if (a[i,1]<>0)and(a[i,2]<>0) then begin
a[i,3]:=a[i,1]+a[i,2]-a[i,0];
b[i,3]:=b[i,1]+b[i,2]-b[i,0];
jl[i]:=3; end;
for i:=1 to k do
for j:=m downto 0 do
for p:=0 to jl[i] do
if (b[i,p]+f[j-a[i,p]]>=f[j])and(j>=a[i,p]) then
f[j]:=b[i,p]+f[j-a[i,p]];
write(f[m]);
end.