Pagini recente » Cod sursa (job #2526923) | Cod sursa (job #896939) | Cod sursa (job #602312) | Cod sursa (job #3186097) | Cod sursa (job #607954)
Cod sursa(job #607954)
# include <cstdio>
typedef long long ll;
const char *FIN = "planeta.in", *FOU = "planeta.out";
const int MAX = 31;
int N;
ll K, ST[MAX];
void back (int st, int dr, ll k) {
int i;
for (i = st; ST[i - st] * ST[dr - i] <= k && i <= dr; ++i)
k -= ST[i - st] * ST[dr - i];
printf ("%d ", i);
if (st < i) back (st, i - 1, k / ST[dr - i]);
if (i < dr) back (i + 1, dr, k % ST[dr - i]);
}
int main (void) {
fscanf (fopen (FIN, "r"), "%d %lld", &N, &K);
ST[0] = 1;
for (int i = 1; i <= N; ++i)
for (int j = 1; j <= i; ++j)
ST[i] += ST[i - j] * ST[j - 1];
freopen (FOU, "w", stdout);
back (1, N, --K);
}