Cod sursa(job #962358)
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
#define in "submultimi.in"
#define out "submultimi.out"
vector <int> p, v;
int n;
void create(int k) {
int x = 0;
v.resize(0);
for (int i = 1; i <= n && x < k; ++i)
if (x < k - p[i])
x += p[i];
else {
x++;
v.push_back (i);
}
}
int main(void) {
ifstream fin (in);
fin >> n;
fin.close();
for (int i = 0; i <= n; ++i)
p.push_back (1 << (n - i));
int t = 1 << n;
ofstream fout (out);
for (int k = 1; k < t; ++k) {
create(k);
for (unsigned i = 0; i < v.size(); ++i)
fout << v[i] << " ";
fout << "\n";
}
fout.close();
return 0;
}