Cod sursa(job #217764)
#include<iostream.h>
int st[100];
int n,m,k,ev,as;
void init (){
st[k]=st[k-1];
}
int succesor (){
if (st[k]<n-m+k){
st[k]=st[k]+1; return 1;
}
else return 0;
}
int valid (){
return 1;
}
int solutie(){
return k==m;
}
void tipar (){
int i;
for (i=1;i<=m;i++) cout<<st[i]<<" ";
cout<<endl;
}
void bt(){
k=1;
init();
while (k>0){
as=1;
ev=0;
while(as && !ev){
as=succesor();
if(as)
ev=valid();
}
if(as)
if (solutie()) tipar();
else {k++; init();}
else k--;}
}
int main(){
freopen("combinari.in","r",stdin);
freopen("combinari.out","w",stdout);
cin>>n;
cin>>m;
bt();
return 0;
}