Pagini recente » Cod sursa (job #2712344) | Cod sursa (job #787780) | Cod sursa (job #2777322) | Cod sursa (job #116447) | Cod sursa (job #18546)
Cod sursa(job #18546)
type lsi=^nod;
nod= record urm:lsi;
inf:longint;
end;
const maxg=75001;
maxn=20001;
var
gre,ult:array[0..maxg] of longint;
v:array[0..maxn] of byte;
ax,n,g,i:longint;
p,cap:lsi;
procedure add(var cap:lsi;el:longint);
var p:lsi;
begin
new(p);
p^.inf:=el;
p^.urm:=cap;
cap:=p;
end;
begin
assign(input,'ghiozdan.in');
reset(input);
readln(n,g);
for i:=1 to maxg do
gre[i]:=1000001;
for i:=1 to n do
readln(v[i]);
cap:=nil;
add(cap,0);
for i:=1 to n do
begin
p:=cap;
while p<> nil do
begin
if gre[p^.inf]+1<gre[p^.inf+v[i]] then
begin
if gre[p^.inf+v[i]]=1000001 then
begin
add(cap,p^.inf+v[i]);
end;
gre[p^.inf+v[i]]:=gre[p^.inf]+1;
ult[p^.inf+v[i]]:=v[i];
end;
p:=p^.urm;
end;
end;
i:=g;
while gre[i]=1000001 do
dec(i);
assign(output,'ghiozdan.out');
rewrite(output);
writeln(i,' ',gre[i]);
ax:=i;
while ult[ax]<>0 do
begin
writeln(ult[ax]);
ax:=ax-ult[ax];
end;
close(output);
end.