Pagini recente » Cod sursa (job #2419616) | Cod sursa (job #1759748) | Cod sursa (job #816865) | Cod sursa (job #2489702) | Cod sursa (job #2899629)
#include <bits/stdc++.h>
using namespace std;
ifstream in("planeta.in");
ofstream out("planeta.out");
long long n,k,nr_catalan[65];
void recurs(long long st, long dr, long long aux)
{
int root;
root = st;
while (root < dr && aux-nr_catalan[root-st]*nr_catalan[dr-root] >= 0)
{
aux -= nr_catalan[root-st] * nr_catalan[dr-root];
root++;
}
out<<root<<" ";
if (root > st) recurs(st, root-1, aux/nr_catalan[dr-root]);
if (root < dr) recurs(root+1, dr, aux%nr_catalan[dr-root]);
}
int main()
{
in>>n>>k;
nr_catalan[0] = 1;
for (int i = 1; i<=64; i++)
for (int j = 1; j<=i; j++)
nr_catalan[i] += nr_catalan[j-1] * nr_catalan[i-j];
recurs(1, n, k - 1);
return 0;
}