Pagini recente » Cod sursa (job #2180791) | Cod sursa (job #689939) | Borderou de evaluare (job #2051289) | Cod sursa (job #704495) | Cod sursa (job #1454139)
#include <iostream>
#include <fstream>
#include <assert.h>
const int NMAX = 19;
const char IN[] = "combinari.in", OUT[] = "combinari.out";
using namespace std;
int stk[NMAX];
int N;
int K;
int v[NMAX];
inline void read_data() {
assert(freopen(IN, "r", stdin));
assert(scanf("%d %d", &N, &K));
fclose(stdin);
}
inline void write_data() {
for (int i = 1; i <= K; ++i) printf("%d ", v[i]);
printf("\n");
}
void back(int i) {
stk[i] = stk[i - 1] + 1;
for (int j = stk[i]; stk[i] <= N; ++stk[i], j = stk[i]) {
v[i] = j;
if (i == K) write_data();
else back(i + 1);
}
stk[i] = 1;
}
int main() {
read_data();
assert(freopen(OUT, "w", stdout));
stk[0] = 0;
back(1);
fclose(stdout);
return 0;
}