Pagini recente » Cod sursa (job #1983031) | Cod sursa (job #2719228) | Cod sursa (job #3143356) | Cod sursa (job #1744607) | Cod sursa (job #257732)
Cod sursa(job #257732)
#include <cstdio>
#define Nmax 32
int N;
long long K, tot;
int C[Nmax];
void catalan()
{
int i, j;
C[0] = 1;
for (i=1; i<=N; ++i)
for (j=0; j<i; ++j)
C[i] += C[j] * C[i-j-1];
}
void go_deep(int st, int dr, long long mul)
{
int i;
if (st>dr) return;
if (st==dr)
{
printf("%d ",st);
return;
}
for (i=st; i<=dr; ++i)
if (tot + C[i-st] * C[dr-i] * mul < K) tot += C[i-st] * C[dr-i] * mul;
else break;
printf("%d ",i);
go_deep(st, i-1, mul * C[dr-i]);
go_deep(i+1, dr, mul);
}
int main()
{
freopen("planeta.in","r",stdin);
freopen("planeta.out","w",stdout);
scanf("%d %I64d",&N, &K);
catalan();
go_deep(1, N, 1);
return 0;
}