Cod sursa(job #209180)
program pascal;
var f,g:text;
i,k,p,n:integer;
sol:array[1..100] of integer;
function count(k:integer):boolean;
begin
count:=true;
for i:=1 to k-1 do
if (sol[i]=sol[k]) or (sol[i]>=sol[i+1]) then
begin
count:=false;
break;
end;
end;
procedure tipar;
begin
for i:=1 to p do write(g,sol[i],' ');
writeln(g);
end;
procedure bkt;
begin
K:=p;
while k>0 do
if sol[k]<n then
begin
sol[k]:=sol[k]+1;
if count(k) then
if k=p then tipar
else
begin
k:=k+1;
sol[k]:=0;
end;
end
else k:=k-1;
end;
begin
assign(f,'combinari.in'); reset(f);
assign(g,'combinari.out'); rewrite(g);
read(f,n,p);
for i:=1 to p do
begin
sol[i]:=i;
write(g,sol[i],' ');
end;
writeln(g);
bkt;
close(f);
close(g);
end.