Pagini recente » Cod sursa (job #2594730) | Cod sursa (job #1843606) | Cod sursa (job #839164) | Cod sursa (job #3005684) | Cod sursa (job #2534332)
#include<cstdio>
#define ll long long
ll k;
ll catalan[35];
int rec(ll st,ll dr,ll nr)
{
ll i;
if (st>dr)
return 0;
if (st==dr)
{
printf("%lld ",st);
return 0;
}
for(i=st;i<=dr;i++)
{
//printf("%lld\n",catalan[i-st]*catalan[dr-i]*nr);
if (k>catalan[i-st]*catalan[dr-i]*nr)
k=k-catalan[i-st]*catalan[dr-i]*nr;
else
break;
}
printf("%lld ",i);
ll cnr=nr;
rec(st,i-1,nr*catalan[dr-i]);
rec(i+1,dr,cnr);
}
int main()
{
freopen("planeta.in","r",stdin);
freopen("planeta.out","w",stdout);
ll n;
scanf("%lld%lld",&n,&k);
ll i,j;
catalan[0]=1;
catalan[1]=1;
for(i=2;i<=30;i++)
for(j=0;j<=i;j++)
catalan[i]+=catalan[j]*catalan[i-1-j];
//for(i=1;i<=30;i++)
// printf("%lld\n",catalan[i]);
rec(1,n,1);
return 0;
}