Cod sursa(job #3350708)

Utilizator robert.stefanRobert Stefan robert.stefan Data 11 aprilie 2026 21:05:36
Problema Submultimi Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
// https://infoarena.ro/problema/submultimi

#include<fstream>

using namespace std;

ifstream fin("submultimi.in");
ofstream fout("submultimi.out");

int n;

// ales[i] = 0 daca NU includ pe i in solutie (submultime)
// ales[i] = 1 daca includ pe i in solutie
// fiind declarat global, initial este initializat cu 0
int ales[17];

void BT(int pos) {
	// pos - pozitia la care ne aflam in vectorul ales
	// nrAles - contorizeaza numarul de elemente alese pentru a crea submultimea curenta

	if(pos > n) {
		// am ajuns la capatul vectorului `ales`, asa ca acum afisez solutia
		int nrAles = 0;

		for(int i = 1; i <= n; i++) {
			if(ales[i]) {
				fout << i << " ";
				nrAles++;
			}
		}

		if(nrAles) {
			fout << endl;
		}

		return;
	}

	// dau pe rand lui ales[pos] valorile 0, respectiv 1
	ales[pos] = 1;
	BT(pos+1);

	ales[pos] = 0;
	BT(pos+1);
}

int main() {
	fin >> n;

	BT(1);

	fin.close();
	fout.close();

	return 0;
}