Pagini recente » Cod sursa (job #788866) | Rating Cibotaru Matei (CibotaruMatei) | Cod sursa (job #1585472) | Cod sursa (job #2904457) | Cod sursa (job #2008926)
#include <bits/stdc++.h>
#define l first
#define r second
using namespace std;
ifstream fi("planeta.in");
ofstream fo("planeta.out");
using i64 = long long;
using pii = pair<int, int>;
const int N = 32;
int ant[N];
i64 trees[N];
i64 k;
int n, p;
void make_tree(int st, int dr, i64 k) {
if (st > dr) return;
for (int i = st; i <= dr; ++i) {
if (k >= trees[i - st] * trees[dr - i])
k-= trees[i - st] * trees[dr - i];
else {
fo << i << ' ';
make_tree(st, i - 1, k / trees[dr - i]);
make_tree(i + 1, dr, k % trees[dr - i]);
return; } } }
int main() {
trees[0] = 1;
for (int i = 1; i < N; ++i)
for (int j = 1; j <= i; ++j)
trees[i]+= trees[j - 1] * trees[i - j];
fi >> n >> k; --k;
make_tree(1, n, k);
fo << endl;
return 0; }