Pagini recente » Cod sursa (job #160105) | Cod sursa (job #1018716) | Cod sursa (job #3264342) | Cod sursa (job #2778553) | Cod sursa (job #2750394)
#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;
for (int i = 1; i <= n; i++)
bst[i] = 2 * (2 * i - 1) * bst[i - 1] / (i + 1);
ord(1, n, k);
return 0;
}