Cod sursa(job #1996661)

Utilizator MaligMamaliga cu smantana Malig Data 2 iulie 2017 12:25:56
Problema Submultimi Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream in("submultimi.in");
ofstream out("submultimi.out");
const int NMax = 16 + 5;

int N,nrSol;
int sol[NMax],nrSub[NMax];

void buildSub(int);

int main() {
    in>>N;

    for (int i=1;i <= N;++i) {
        nrSub[i] = 1<<(N-i);
    }

    int lim = 1<<N;
    for (int k=1;k < lim;++k) {
        buildSub(k);

        for (int i=1;i <= nrSol;++i) {
            out<<sol[i]<<' ';
        }
        out<<'\n';
    }

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

void buildSub(int k) {
    nrSol = 0;
    int nr = 0;

    for (int i=1;i <= N && nr < k;++i) {
        int low = nr+1,
            high = nr + nrSub[i];

        if (k > high) {
            nr += nrSub[i];
            continue;
        }
        ++nr;
        sol[++nrSol] = i;
    }
}