Pagini recente » infoarena - te ajutam sa devii olimpic! | Cod sursa (job #673282) | Cod sursa (job #305981) | Cod sursa (job #1643006) | Cod sursa (job #2178074)
#include <iostream>
#include <fstream>
#include <stack>
using namespace std;
ifstream in("submultimi.in");
ofstream out("submultimi.out");
struct Block { int k, last; };
int n, subset[17];
stack<Block> stk;
void show(int k) {
for (int i = 1; i <= k; ++i) {
out << subset[i] << " ";
}
out << "\n";
}
int main()
{
in >> n;
stk.push({1, 0});
while (!stk.empty()) {
Block blk = stk.top();
int k = blk.k;
int last = blk.last;
if (k > n || last >= n) {
stk.pop();
continue;
}
subset[k] = last + 1;
show(k);
stk.pop();
stk.push({k, last + 1});
stk.push({k + 1, last + 1});
}
return 0;
}