Cod sursa(job #641910)
program combinari;
var f,g:text;
n,p:byte;
v:array [1..18] of byte;
function contin (k:integer):boolean;
begin
contin:=true;
if (k>1) and (v[k-1]>=v[k]) then
contin:=false;
end;
procedure bkt;
var k,i:integer;
begin
k:=1; v[k]:=0;
while k>0 do
if v[k]<n then
begin
v[k]:=v[k]+1;
if contin (k) then
if k=p then
begin
for i:=1 to p do
write (g,v[i],' ');
writeln (g);
end
else
begin
k:=k+1; v[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);
bkt;
close (f);
close (g);
end.