Cod sursa(job #18546)

Utilizator mipsPavel Mircea mips Data 18 februarie 2007 12:35:28
Problema Ghiozdan Scor 62
Compilator fpc Status done
Runda preONI 2007, Runda 2, Clasele 11-12 Marime 0.94 kb
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.