Cod sursa(job #2499385)

Utilizator radustn92Radu Stancu radustn92 Data 26 noiembrie 2019 00:08:56
Problema Combinari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <vector>
using namespace std;

void consume(vector<bool>& taken, int largestPossibleValue) {
	for (int i = 1; i <= largestPossibleValue; i++) {
		if (taken[i]) {
			printf("%d ", i);
		}
	}
	printf("\n");
}

void back(int remainingElems, int N, vector<bool>& taken, int lastElem) {
	if (remainingElems == 0) {
		consume(taken, N);
		return;
	}

	for (int nextElem = lastElem + 1; nextElem <= N; nextElem++) {
		if (!taken[nextElem]) {
			taken[nextElem] = true;
			back(remainingElems - 1, N, taken, nextElem);
			taken[nextElem] = false;
		}
	}
}

int main() {
	freopen("combinari.in", "r", stdin);
	freopen("combinari.out", "w", stdout);

	int N, K;
	scanf("%d%d", &N, &K);
	vector<bool> taken(N + 1, false);
	back(K, N, taken, 0);
	return 0;
}