Cod sursa(job #714924)

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

procedure solve;
var i,j,k:longint;
begin
for i:=1 to g do sum[i]:=-1;
for j:=1 to g do
for i:=1 to n do
if (v[i].g<=j)and(sum[j-v[i].g]<>-1)and(use[j-v[i].g,i]=false) then
if sum[j]<sum[j-v[i].g]+v[i].c then
begin
sum[j]:=sum[j-v[i].g]+v[i].c;
for k:=1 to n do
use[j,k]:=use[j-v[i].g,k];
use[j,i]:=true;
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);
if v[i].g>max then max:=v[i].g;
end;
sum[0]:=0;
solve;
tmax:=0;
for i:=g downto 1 do
if (sum[i]>tmax) then  tmax:=sum[i];
writeln(tmax);
close(output);
end.