Pagini recente » Cod sursa (job #2899509) | Cod sursa (job #1953329) | Cod sursa (job #1221035) | Cod sursa (job #1895798) | Cod sursa (job #2899496)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("planeta.in");
ofstream out("planeta.out");
int catalan[31];
void sol(long long st, long dr, long long r)
{
int rad, ok = 1;
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;
}