Cod sursa(job #190538)

Utilizator andrutzaDincu Andra andrutza Data 22 mai 2008 23:20:04
Problema Combinari Scor 80
Compilator fpc Status done
Runda Arhiva educationala Marime 0.95 kb
var n,p,i,m:integer;
    sol:array[1..100]of integer;

procedure init(k:integer);
begin
  sol[k]:=0;
end;

function succesor(k:integer):boolean;
begin
  if (sol[k]<n) then begin
     sol[k]:=sol[k]+1;
     succesor:=true;
  end
  else succesor:=false;
end;

function valid(k:integer):boolean;
var i:integer;
begin
  valid:=true;
  for i:=1 to k-1 do
    if (sol[i]=sol[k])or(sol[i]>sol[k]) then valid:=false;
end;

function solutie(k:integer):boolean;
begin
  solutie:=(k=m+1);
end;

procedure tipar;
var i:integer;
   begin
   for i:=1 to m do write(sol[i],' ');
   writeln;
end;

procedure back(k:integer);
begin
  if solutie(k) then tipar
   else begin
      init(k);
      while succesor(k) do
        if valid(k) then back(k+1);
    end;
end;

begin
  assign(input,'combinari.in'); reset(input);
  assign(output,'combinari.out'); rewrite(output);
  readln(n,m);
  back(1);
  close(input); close(output);
end.