Cod sursa(job #202303)

Utilizator fatazeuluiClaudia Trif fatazeului Data 7 august 2008 12:37:19
Problema Combinari Scor 80
Compilator fpc Status done
Runda Arhiva educationala Marime 1.27 kb
program perm;
type stiva = array[1..18] of byte;
var st:stiva;
    i,n,k,m:byte;
    as,ev:boolean;
    f,g:text;

procedure succesor(k:integer;var st:stiva;var as:boolean);
begin
if st[k]<n then begin
                 as:=true;
                 inc(st[k]);
                end
           else as:=false;
end;

procedure valid(k:integer;st:stiva;var ev:boolean);
begin
ev:=true;
if (k>1) and (st[k]<=st[k-1]) then ev:=false;
end;

BEGIN
assign(f,'combinari.in');reset(f);
readln(f,n,m);close(f);
assign(g,'combinari.out');rewrite(g);
k:=1; st[k]:=0;
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 k=m then begin
                 for i:=1 to m do write(g,st[i],' ');
                 writeln(g);
                                       end
                                         else
                                             begin
                                                  k:=k+1;
                                                  st[k]:=0;
                                             end
                       else k:=k-1;
            end;
close(g);
END.