Cod sursa(job #710731)
#include<fstream>
using namespace std;
ifstream f("combinari.in");
ofstream g("combinari.out");
int n,p,x[20];
int pc(int k)
{if(k<=p&&x[k]<n)
{++x[k];
return 1;
}
return 0;
}
int valid(int k)
{int i;
for(i=1;i<k;++i)
if(x[i]==x[k])
return 0;
if(x[k]<x[k-1])
return 0;
return 1;
}
int sol(int k)
{if(k==p)
return 1;
return 0;
}
void afis(int k)
{int i;
for(i=1;i<=k;++i)
g<<x[i]<<' ';
g<<'\n';
}
void back()
{int k,ok;
k=1;
x[k]=0;
while(k>0)
{ok=0;
while(ok==0&&pc(k))
if(valid(k))
ok=1;
if(ok==0)
--k;
else
if(sol(k))
afis(k);
else
{++k;
x[k]=0;
}
}}
int main()
{f>>n>>p;
back();
f.close();
g.close();
return 0;
}