Cod sursa(job #1333931)

Utilizator diac_paulPaul Diac diac_paul Data 3 februarie 2015 18:48:07
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>

FILE *fin = fopen("combinari.in", "rt");
FILE *fout = fopen("combinari.out", "wt");

int n, k;

int comb[50000];
int nrc;

int main() {
	
	fscanf(fin, "%d %d", &n, &k);

	for (int S = 0; S < (1 << n); S++) {
		// S reprezinta o submultime de n elemente prin biti

		int nr = 0;
		for (int i = 0; i < n; i++) {
			if ((S & (1 << i)) != 0) {
				nr++;
			}
		}

		if (nr == k) {
			// submultimea are k elemente, deci e o combinare de k
			comb[nrc++] = S;
		}
	}

	for (int i = nrc-1; i >= 0; i--) {
		for (int j = n-1; j >=0; j--) {
			if ((comb[i] & (1 << j)) != 0) {
				fprintf(fout, "%d ", n - j);
			}
		}
		fprintf(fout, "\n");
	}
	
	fclose(fin);
	fclose(fout);

	return 0;
}