Pagini recente » Cod sursa (job #3228549) | Cod sursa (job #1279149) | Cod sursa (job #1452471) | Cod sursa (job #731718) | Cod sursa (job #2138429)
#include<bits/stdc++.h>
using namespace std;
long long dp[35],k;
int n;
inline void Solve(int st,int dr,long long k)
{
if(st>dr) return;
for(int i=st;i<=dr;i++)
{
int x=i-st;
int y=dr-i;
if(k>dp[x]*dp[y]) k-=dp[x]*dp[y];
else
{
printf("%d ",i);
long long ax,ay;
ax=k/dp[y];
if(k%dp[y]) ax++;
if(!(k%dp[y])) ay=dp[y];
else ay=k%dp[y];
Solve(st,i-1,ax);
Solve(i+1,dr,ay);
return;
}
}
}
int main()
{
freopen("planeta.in","r",stdin);
freopen("planeta.out","w",stdout);
scanf("%d%lld",&n,&k);
dp[0]=1LL;
for(int i=1;i<=n;i++)
{
for(int j=0;j<=i;j++)
{
dp[i]+=dp[i-j-1]*dp[j];
}
}
Solve(1,n,k);
return 0;
}