Cod sursa(job #1791477)

Utilizator medicinedoctoralexandru medicinedoctor Data 29 octombrie 2016 13:51:03
Problema Submultimi Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

bool unu(vector <bool> b)
{
    for (int i=0; i<b.size(); i++)
    {
        if (!b[i]) return false;
    }
    return true;
}

bool nb(vector <bool> &x)
{
    if (unu(x)) return false;
    vector<bool>::reverse_iterator p=find(x.rbegin(),x.rend(),false);
    *p=true;
    fill(x.rbegin(),p,false);
    return true;
}

main()
{
    int n;
    cin >> n;
    vector <bool> a(n);
    fill(a.begin(),a.end(),false);
    while (nb(a))
    {
        for (int i=0; i<a.size(); i++)
        {
            if (a[i]) cout << i+1 << ' ';
        }
        cout << '\n';
    }
}