Cod sursa(job #1454139)

Utilizator GilgodRobert B Gilgod Data 25 iunie 2015 15:22:07
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#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;
}