30 lines
725 B
ObjectPascal
30 lines
725 B
ObjectPascal
program skyline;
|
|
var
|
|
a,b,aa,bb,c:array[1..2000]of longint;
|
|
f:array[0..500]of longint;
|
|
n,v,i,j,k,n1,n2,m,w,s:longint;
|
|
begin
|
|
assign(input,'hallows.in');reset(input);
|
|
assign(output,'hallows.out');rewrite(output);
|
|
readln(n,v);
|
|
for i:=1 to n do
|
|
begin
|
|
readln(m,w,s);
|
|
if m*w<v then begin
|
|
inc(n1);
|
|
a[n1]:=w;b[n1]:=s;c[n1]:=m;
|
|
end else begin
|
|
inc(n2);
|
|
aa[n2]:=w;bb[n2]:=s;
|
|
end;
|
|
end;
|
|
for i:=1 to n1 do
|
|
for j:=v downto 0 do
|
|
for k:=1 to c[i] do
|
|
if (j>=a[i]*k)and(f[j-a[i]*k]+b[i]*k>f[j]) then f[j]:=f[j-a[i]*k]+b[i]*k;
|
|
for i:=1 to n2 do
|
|
for j:=aa[i] to v do
|
|
if f[j-aa[i]]+bb[i]>f[j] then f[j]:=f[j-aa[i]]+bb[i];
|
|
writeln(f[v]);
|
|
close(input);close(output);
|
|
end. |