#include <bits/stdc++.h>
using namespace std;
#define size 4
int arr[size] = {1,2,3,4};
vector< vector<int> > all;
void generate_powerset(int *temparr, int level, int start)
{
int i, j;
vector<int> sub ;
for(i=start; i<size; i++)
{
temparr[level] = arr[i];
sub.clear();
// printf("{ ");
for (j=0; j<=level; j++)
sub.push_back(temparr[j]); //printf("%d ",temparr[j]);
all.push_back(sub);
// printf("}\n");
if( i < size-1)
generate_powerset(temparr, level+1, i+1);
}
}
int main()
{
printf("{ }\n"); // Empty Set!
int temparr[size] = {0};
generate_powerset(temparr, 0, 0);
for (auto i: all)
{
for(auto j : i)
cout << j << " ";
cout << endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgc2l6ZSA0CgppbnQgYXJyW3NpemVdID0gezEsMiwzLDR9Owp2ZWN0b3I8IHZlY3RvcjxpbnQ+ID4gYWxsOwoKdm9pZCBnZW5lcmF0ZV9wb3dlcnNldChpbnQgKnRlbXBhcnIsIGludCBsZXZlbCwgaW50IHN0YXJ0KQp7CglpbnQgaSwgajsKCXZlY3RvcjxpbnQ+IHN1YiA7Cglmb3IoaT1zdGFydDsgaTxzaXplOyBpKyspCgl7CgkJdGVtcGFycltsZXZlbF0gPSBhcnJbaV07CgkJc3ViLmNsZWFyKCk7CgkJLy8gcHJpbnRmKCJ7ICIpOwoJCWZvciAoaj0wOyBqPD1sZXZlbDsgaisrKQoJCQlzdWIucHVzaF9iYWNrKHRlbXBhcnJbal0pOyAvL3ByaW50ZigiJWQgIix0ZW1wYXJyW2pdKTsKCQlhbGwucHVzaF9iYWNrKHN1Yik7CgkJLy8gIHByaW50ZigifVxuIik7CgkJaWYoIGkgPCBzaXplLTEpCgkJCWdlbmVyYXRlX3Bvd2Vyc2V0KHRlbXBhcnIsIGxldmVsKzEsIGkrMSk7Cgl9Cn0KCmludCBtYWluKCkKewoJcHJpbnRmKCJ7IH1cbiIpOyAvLyBFbXB0eSBTZXQhCglpbnQgdGVtcGFycltzaXplXSA9IHswfTsKCWdlbmVyYXRlX3Bvd2Vyc2V0KHRlbXBhcnIsIDAsIDApOwoJZm9yIChhdXRvIGk6IGFsbCkKICAgIHsKICAgICAgICBmb3IoYXV0byBqIDogaSkKICAgICAgICAgICAgY291dCA8PCBqIDw8ICIgIjsKICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9Cgp9Cg==