Cod sursa(job #272363)

Utilizator MBlueGheorghevici Mihai MBlue Data 6 martie 2009 22:02:45
Problema Combinari Scor 80
Compilator fpc Status done
Runda Arhiva educationala Marime 1.43 kb
var k,p,n : integer;
    st : array[1..100] of integer;
    valid,succesor : boolean;
    fin,fout:text;
procedure aresuccesor;
begin
     succesor := false;
     if st[k] < n then begin
        st[k] := st[k] +1;
        succesor := true;
     end;
end;
procedure validare;
var i:integer;
begin
     valid := true;
     for i := 1 to k-1 do begin
         if st[i] = st[k] then
            valid := false;
     end;
     if k > 1 then
        if st[k] < st[k-1] then valid := false;
end;
procedure afisare;
var i: integer;
begin
     for i := 1 to p do begin
         write(fout,st[i],' ');
     end;
     writeln(fout);
end;
begin
     assign(fin,'combinari.in');
     reset(fin);
     read(fin,n,p);
     close(fin);
     assign(fout,'combinari.out');
     rewrite(fout);
     k := 1;
     st[k] := 0;
     while k > 0 do begin
           succesor := true;
           valid := false;
           while succesor and (not valid) do begin
                 aresuccesor;
                 if succesor then validare;
           end;
           if valid then
                    if k = p then afisare
                       else begin
                             k:= k+1;
                             {st[k] := st[k-1];}
                             st[k] := 0;
                       end
                    else begin
                         k := k-1;
                    end;
     end;
     close(Fout);
end.