Cod sursa(job #414105)
#include <cstdio>
int x[19],N,K;
void afis()
{
for(int i=1;i<K;i++)
for(int j=i+1;j<=K;j++)
if(x[i]>=x[j])
return;
for(int i=1;i<=K;i++)
printf("%d ", x[i]);
printf("\n");
}
int main()
{
freopen("combinari.in","r",stdin);
freopen("combinari.out","w",stdout);
scanf("%d%d",&N,&K);
int i,a,c,s;
a=1;
x[a]=0;
while(a>0)
{
do
{
if(x[a]<N)
{
x[a]++;
c=1;
s=1;
for (i=1;i<a;i++)
if(x[i]>=x[a])
c=0;
}
else s=0;
} while(s && !c);
if (s)
if(x[a]==N)
afis();
else x[++a]=0;
else a--;
}
return 0;
}