Cod sursa(job #249486)

Utilizator rendorzegAndrei Pavel rendorzeg Data 28 ianuarie 2009 16:29:41
Problema Loto Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.49 kb
type stiva=array [1..100] of longint;
var f,g:text;
    st,a:stiva;
    n,p,i,k,c,s:integer;
    as,ev,ok:boolean;
procedure init(k:integer;var st:stiva);
begin
st[k]:=0;
end;
procedure succesor(k:integer; var st:stiva; var as:boolean);
BEGIN
if st[k]<n then begin
                st[k]:=st[k]+1;
                as:=true;
                end
           else
           as:=false;
end;
procedure valid(k:integer; st:stiva; var ev:boolean);
var i:integer;
begin
ev:=true;
s:=0;
for i:=1 to k do s:=s+a[st[i]];
if s<>p then ev:=false;
end;
function solutie(k:integer;st:stiva):boolean;
begin
solutie:=n=k;
end;
procedure tipar(k:integer);
var i:integer;
begin
for i:=1 to k do write(g,a[st[i]],' ');
end;
begin
assign(f,'loto.in');
reset(f);
assign(g,'loto.out');
rewrite(g);
read(f,n);
read(f,p);
for i:=1 to n do read(f,a[i]);
k:=1;
init(k,st);
ok:=false;
{for i:=1 to n do readln(a[i]);}
while k>0 do begin
repeat
succesor(k,st,as);
if as then valid(k,st,ev);
until( as and ev) or (not as);
if as then if solutie (k,st) then       begin
                                        tipar (k);
                                        ok:=true;
                                        end
                                        else begin
                                        k:=k+1;
                                        init(k,st);
                               end
      else k:=k-1;
      end;
if ok=false then write(g,'-1');
close(f);
close(g);
end.