Pagini recente » Cod sursa (job #2273047) | Cod sursa (job #2406631) | Cod sursa (job #2000297) | Cod sursa (job #1610679) | Cod sursa (job #2899506)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("planeta.in");
ofstream out("planeta.out");
long long catalan[31];
void sol(long long st, long dr, long long r)
{
int rad;
rad = st;
while(rad <= dr && r - catalan[rad-st]*catalan[dr-rad] >= 0)
{
r -= catalan[rad-st]*catalan[dr-rad];
rad++;
}
out << rad << ' ';
if(rad > st)
sol(st, rad - 1, r % catalan[dr - rad]);
if(rad < dr)
sol(rad + 1, dr, r / catalan[rad - st]);
}
int main(){
int n;
long long k;
in >> n >> k;
catalan[0]=1;
for(int i=1;i<=30;i++)
for(int j=1;j<=i;j++)
catalan[i]+=catalan[j-1]*catalan[i-j];
sol(1,n,k);
return 0;
}