Cod sursa(job #3346548)

Utilizator MetalAweTiberiu Podareanu MetalAwe Data 14 martie 2026 10:46:28
Problema Submultimi Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#define FIN "submultimi.in"
#define FOUT "submultimi.out"
using namespace std;

int stack[100], level, n;

void init() {
	stack[level] = -1;
}

int succ() {
	if (stack[level] < 1) {
		stack[level] += 1;
		return 1;
	}
	return 0;
}

int valid() {
	return 1;
}

void print() {
	int flag = 0;
	for (int i = 1; i <= n; i++) {
		if (stack[i] == 1) {
			cout << i << " ";
			flag = 1;
		}
	}
	if (flag == 1) cout << "\n";
}

int sol() {
	return level == n;
}

void bkt() {
	int s, v;
	level = 1;
	init();
	while (level > 0) {
		s = 1;
		v = 0;
		while (s && !v) {
			s = succ();
			if (s) v = valid();
		}
		if (s) {
			if (sol()) {
				print();
			}
			else {
				level++;
				init();
			}
		}
		else {
			level--;
		}
	}
}

int main() {
	freopen(FIN, "r", stdin);
	freopen(FOUT, "w", stdout);
	cin >> n;
	bkt();
	return 0;
}