33 lines
992 B
ObjectPascal
33 lines
992 B
ObjectPascal
program skyline;
|
|
var
|
|
ap,ar,aap,aar,c,b,bb:array[1..150]of longint;
|
|
f:array[0..100,0..100]of longint;
|
|
n,n1,n2,p,r,i,j,k,l,pg,rune,num,dps:longint;
|
|
begin
|
|
assign(input,'pgrune.in');reset(input);
|
|
assign(output,'pgrune.out');rewrite(output);
|
|
readln(n,p,r);
|
|
for i:=1 to n do
|
|
begin
|
|
readln(pg,rune,num,dps);
|
|
if (num=0)or((pg*num>=p)and(rune*num>=r)) then begin
|
|
inc(n1);
|
|
ap[n1]:=pg;ar[n1]:=rune;b[n1]:=dps;
|
|
end else begin
|
|
inc(n2);
|
|
aap[n2]:=pg;aar[n2]:=rune;bb[n2]:=dps;c[n2]:=num;
|
|
end;
|
|
end;
|
|
for i:=1 to n1 do
|
|
for j:=ap[i] to p do
|
|
for k:=ar[i] to r do
|
|
if f[j-ap[i],k-ar[i]]+b[i]>f[j,k] then f[j,k]:=f[j-ap[i],k-ar[i]]+b[i];
|
|
for i:=1 to n2 do
|
|
for j:=p downto 0 do
|
|
for k:=r downto 0 do
|
|
for l:=1 to c[i] do
|
|
if (j>=aap[i]*l)and(k>=aar[i]*l)and(f[j-aap[i]*l,k-aar[i]*l]+bb[i]*l>f[j,k]) then f[j,k]:=f[j-aap[i]*l,k-aar[i]*l]+bb[i]*l;
|
|
writeln(f[p,r]);
|
|
close(input);close(output);
|
|
end.
|