Cod sursa(job #2000153)

Utilizator MaligMamaliga cu smantana Malig Data 12 iulie 2017 18:31:50
Problema Submultimi Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <stack>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <stack>

using namespace std;
ifstream in("submultimi.in");
ofstream out("submultimi.out");

#define ll long long
#define pb push_back
const int inf = 1e9 + 5;
const int NMax = 20 + 5;

int N;
int nrSub[NMax],v[NMax];

void solve(int);

int main() {
    in>>N;

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

    int lim = 1<<(N);
    for (int i=1;i < lim;++i) {
        solve(i);
    }

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

void solve(int nr) {
    int val = 1,pos = 0,idx = 0;

    while (pos < nr) {
        int low = pos + 1, high = pos + nrSub[val];
        if (low <= nr && nr <= high) {
            pos = low;
            v[++idx] = val;
            ++val;
        }
        else {
            pos = high;
            ++val;
        }
    }


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