Cod sursa(job #2850774)

Utilizator IoanaNadIoana Nadia Puiu IoanaNad Data 17 februarie 2022 15:33:53
Problema Combinari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

void printVect(vector<int> arr, int K, ofstream& fout) {
	for (int i = 0; i < K; ++i)
		fout << arr[i] << " ";
	fout << "\n";
}

void combinatorics(vector<int>& arr, int n, int k, ofstream& fout) {
	printVect(arr, k, fout);
	while (arr[k - 1] + 1 <= n) {
		++arr[k - 1];
		printVect(arr, k, fout);
	}
	int ant = k - 2, post = k - 1;
	while (ant >= 0) {
		if (arr[post] - arr[ant] > 1)
			break;
		--ant;
		--post;
	}
	if (ant == -1)
		return;
	arr[ant]++;
	for (int i = ant + 1; i < k; ++i)
		arr[i] = arr[i - 1] + 1;
	combinatorics(arr, n, k, fout);
}

int main() {
	ifstream fin("combinari.in");
	ofstream fout("combinari.out");
	int N, K;
	fin >> N >> K;
	vector<int> arr;
	for (int i = 1; i <= K; ++i)
		arr.push_back(i);
	combinatorics(arr, N, K, fout);
	return 0;
}