Wed Feb 22, 2012 4:41 pm
Admin ___________________________________________________________________________________________________________________________________________
- ấn vào để xem :
- program doitien;
const fi='doitien.inp';fo='doitien.out';vc=-maxint;
var s,n,w:integer;f:text;
a,t,b:array[1..100] of integer;
l:array[0..100] of integer;
dd:array[1..100] of boolean;
procedure doc;
var i:integer;
begin
assign(f,fi);reset(f);
readln(f,n,s);
for i:=1 to n do readln(f,a[i],b[i]);
close(f);
assign(f,fo);rewrite(f);
end;
procedure khoitao;
var i:integer;
begin
fillchar(dd,sizeof(dd),false);
l[0]:=0;
for i:=1 to s do l[i]:=vc;
end;
procedure xdbang;
var i,j:integer;
begin
for i:=1 to s do
for j:=1 to n do
if a[j]<=i then
begin
if l[i]<(l[i-a[j]]+b[j]) then
begin
l[i]:=l[i-a[j]]+b[j];
t[i]:=j;
end;
end;
end;
procedure truyvet;
var c:array[1..100] of integer;
i:integer;
begin
Fillchar(c,sizeof(c),0);
if l[s]=vc then writeln(f,-1)else
begin
writeln(f,l[s]);
while l[s]<>0 do
begin
i:=t[s];
inc(c[i]);
s:=s-a[i];
end;
for i:=1 to n do
if c[i]>0 then
begin
write(f,i,' ',c[i]);
writeln(f);
end;
end;
end;
BEGIN
doc;khoitao;xdbang;truyvet;close(f);
END.
- Code:
program doitien;
const fi='doitien.inp';fo='doitien.out';vc=-maxint;
var s,n,w:integer;f:text;
a,t,b:array[1..100] of integer;
l:array[0..100] of integer;
dd:array[1..100] of boolean;
procedure doc;
var i:integer;
begin
assign(f,fi);reset(f);
readln(f,n,s);
for i:=1 to n do readln(f,a[i],b[i]);
close(f);
assign(f,fo);rewrite(f);
end;
procedure khoitao;
var i:integer;
begin
fillchar(dd,sizeof(dd),false);
l[0]:=0;
for i:=1 to s do l[i]:=vc;
end;
procedure xdbang;
var i,j:integer;
begin
for i:=1 to s do
for j:=1 to n do
if a[j]<=i then
begin
if l[i]<(l[i-a[j]]+b[j]) then
begin
l[i]:=l[i-a[j]]+b[j];
t[i]:=j;
end;
end;
end;
procedure truyvet;
var c:array[1..100] of integer;
i:integer;
begin
Fillchar(c,sizeof(c),0);
if l[s]=vc then writeln(f,-1)else
begin
writeln(f,l[s]);
while l[s]<>0 do
begin
i:=t[s];
inc(c[i]);
s:=s-a[i];
end;
for i:=1 to n do
if c[i]>0 then
begin
write(f,i,' ',c[i]);
writeln(f);
end;
end;
end;
BEGIN
doc;khoitao;xdbang;truyvet;close(f);
END.