Cod sursa(job #2773466)

Utilizator radu.z5Zamfirescu Radu Ioan radu.z5 Data 6 septembrie 2021 23:33:33
Problema Submultimi Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>

using namespace std;

void subsets(int n, ofstream &out) {
    int mask[n];
    int i;
    for (i = 0; i < n; i++)
        mask[i] = -1;

    i = 0;
    while (i >= 0) {
        bool valid = false;
        while (!valid && mask[i] <= 1) {
            mask[i]++;
            valid = (mask[i] >= 0);
        }

        if (mask[i] <= 1) {
            if (i == n - 1) {
                bool empty = true;
                for (int j = 0; j < n; j++) {
                    if (mask[j] > 0) {
                        out << j + 1 << ' ';
                        if (empty)
                            empty = false;
                    }
                }
                if (!empty)
                    out << '\n';
            } else {
                ++i;
            }
        } else {
            mask[i--] = -1;
        }
    }
}

int main(void) {
    ifstream in("submultimi.in");
    ofstream out("submultimi.out");

    int n;
    in >> n;

    subsets(n, out);

    in.close();
    out.close();
    return 0;
}