Cod sursa(job #1600145)

Utilizator DoubleNyNinicu Cristian DoubleNy Data 14 februarie 2016 18:40:56
Problema Combinari Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 1.16 kb
var v:array[1..30] of integer;
    n,p:integer;

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

 function solutie(k:integer):boolean;
   begin
       if k=p then solutie:=true
       else solutie:=false;
   end;

 procedure afisare(k:integer);
 var i:integer;
   begin
        for i:=1 to k do write(output,v[i],' ');
        writeln(output);
   end;
 function lexicografic(k:integer):boolean;
  var i:integer;
  begin
   lexicografic:=true;
   for i:=2 to p do
   if v[i]<v[i-1] then lexicografic:=false;
  end;

 procedure backtrack(k:integer);
 var i:integer;
   begin
       for i:=1 to n do
         begin
             v[k]:=i;
             if valid(k)=true then
               begin
                  if (solutie(k)=true) and (lexicografic(k)) then afisare(k);
                  backtrack(k+1);
               end;
         end;
   end;

 Begin
   assign(input,'combinari.in');  reset(input);
   assign(output,'combinari.out'); rewrite(output);
   readln(input,n,p);
   backtrack(1);
   close(input);
   close(output);
 end.