Cod sursa(job #714831)

Utilizator lehman97Dimulescu David lehman97 Data 16 martie 2012 11:20:50
Problema Problema rucsacului Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.81 kb
type vec=record
g:longint;
c:longint;
end;
var sum:array[1..5000]of longint;
v:array[0..5000]of vec;
use:array[1..5000,1..10000]of boolean;
n,g,i,max,j,tmax:longint;

procedure solve;
var i,j:longint;
begin
for i:=1 to n do
for j:=max downto 1 do
if (sum[j]<>0)and(v[i].c+sum[j]>sum[v[i].g+j])and(not use[i,j]) then
begin
use[i,j+v[i].g]:=true;
sum[v[i].g+j]:=v[i].c+sum[j];
if v[i].g+j>max then max:=v[i].g+j;
if max>g then max:=g;
end;

end;
begin
assign(input,'rucsac.in');reset(input);
assign(output,'rucsac.out');rewrite(output);
read(n,g);
max:=0;
for i:=1 to n do
begin
read(v[i].g,v[i].c);
sum[v[i].g]:=v[i].c;
use[i,v[i].g]:=true;
if v[i].g>max then max:=v[i].g;
end;
solve;
tmax:=0;
for i:=g downto 1 do
if sum[i]>tmax then tmax:=sum[i];
writeln(sum[g]);
close(output);
end.