Pagini recente » Cod sursa (job #2544896) | Cod sursa (job #1410731) | Cod sursa (job #2403825) | Cod sursa (job #116477) | Cod sursa (job #1113666)
program combinari;
type stiva=array[1..18] of byte;
var st:stiva;
k,n,p:0..18; f:text;
ev,as:boolean;
procedure init(k:byte; var st:stiva);
begin
st[k]:=0;
end;
procedure tipar(k:byte; st:stiva);
var i:byte;
begin
for i:=1 to p do write(f,st[i],' ');
writeln(f);
end;
function solutie(k:byte):boolean;
begin
if k=p then solutie:=true
else solutie:=false;
end;
procedure valid(k:byte; st:stiva; var ev:boolean);
var i:byte;
begin
ev:=true;
if (k>1) and (st[k]<=st[k-1]) then ev:=false;
end;
procedure suc(k:byte; var st:stiva; var as:boolean);
begin
if (st[k]<(n-p+k)) then begin st[k]:=st[k]+1; as:=true; end
else as:=false;
end;
begin
assign(f,'combinari.in'); reset(f);
read(f,n); readln(f,p); close(f);
assign(f,'combinari.out'); rewrite(f);
k:=1;
init(k,st);
while k>0 do begin
repeat
suc(k,st,as);
if as then valid(k,st,ev);
until (not as) or (as and ev);
if as then if solutie(k) then tipar(k,st)
else begin k:=k+1; init(k,st); end
else k:=k-1;
end;
close(f);
end.