Pagini recente » Cod sursa (job #2557524) | Cod sursa (job #779880) | Cod sursa (job #2789058) | Cod sursa (job #2376197) | Cod sursa (job #957785)
Cod sursa(job #957785)
#include<fstream>
using namespace std;
int main(){
int n, m, k, i;
freopen("combinari.in", "rt", stdin);
freopen("combinari.out", "wt", stdout);
scanf("%d %d", &n, &k);
bool v[n];
int s[n];
for(i=0; i<n; i++)
v[i]=false, s[i]=0;
m=0;
while(m>=0){
//if solution
if(m==k){
for(i=0; i<k; i++)
printf("%d ", s[i]+1);
printf("\n");
}
//try to advance
if(m<k){
for(i=(m==0?0:s[m-1]+1); i<n && v[i]; ++i);
if(i<n){
v[i]=true;
s[m]=i;
m++;
continue;
}
}
//go back
while(--m>=0){
v[s[m]]=false;
for(i=s[m]+1; i<n && v[i]; ++i);
if(i<n){
v[i] = true;
s[m]=i;
m++;
break;
}
}
}
fclose(stdin);
fclose(stdout);
return 0;
}