Pagini recente » Cod sursa (job #2871160) | Cod sursa (job #2203777) | Cod sursa (job #2605641) | Cod sursa (job #2515077) | Cod sursa (job #2210393)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("planeta.in");
ofstream fout ("planeta.out");
int n, k; long long dp[32];
void f(int st, int dr, long long k) {
if (st > dr)
return;
int nr = st;
int val = dp[nr - st] * dp[dr - nr];
while (nr <= dr && val < k) {
k -= val;
nr++;
val = dp[nr - st] * dp[dr - nr];
}
fout << nr << " ";
int ST, DR;
ST = ceil((double)k / dp[dr - nr]);
DR = (k % dp[dr - nr]?k % dp[dr - nr]: dp[dr - nr]);
f(st, nr - 1, ST);
f(nr + 1, dr, DR);
}
int main()
{
fin >> n >> k;
dp[0] = 1;
for (int i = 1; i <= n; i++)
for (int j = 0; j <= i; j++)
dp[i] += dp[j] * dp[i - j - 1];
f(1, n, k);
return 0;
}