Pagini recente » Cod sursa (job #2443017) | clasament-arhiva-educationala | Cod sursa (job #530220) | Cod sursa (job #1873908) | Cod sursa (job #2750393)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");
long long int bst[35];
void ord(int left, int right, long long int k)
{
int i = left;
while (i <= right && bst[i - left] * bst[right - i] <= k)
{
k -= bst[i - left] * bst[right - i];
i++;
}
fout<<i<<" ";
if (left < i)
ord(left, i - 1, k / bst[right - i]);
if (right > i)
ord(i + 1, right, k % bst[right - i]);
}
int main()
{
int n;
long long int k;
fin>>n>>k;
k--;
bst[0] = 1;
bst[1] = 1;
for (int i = 2; i <= n; i++)
for (int j = 0; j < i; j++)
bst[i] += bst[j] * bst[i - j - 1];
ord(1, n, k);
return 0;
}