Pagini recente » Cod sursa (job #1655048) | Cod sursa (job #1255012) | Cod sursa (job #2878699) | Cod sursa (job #1026809) | Cod sursa (job #330142)
Cod sursa(job #330142)
#include <cstdio>
#define file_in "planeta.in"
#define file_out "planeta.out"
#define Nmax 31
int n;
long long C[Nmax],k,x;
void solve(int ls, int ld, long long val)
{
int i,ok;
if (ls>ld)
return ;
if (ls==ld)
{
printf("%d ", ls);
return ;
}
ok=0;
for (i=ls;i<=ld && !ok;++i)
if (x+C[i-ls]*C[ld-i]*val<k)
x+=C[i-ls]*C[ld-i]*val;
else
break;
printf("%d ", i);
solve(ls,i-1,val*C[ld-i]);
solve(i+1,ld,val);
}
int main()
{
int i,j,t;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %lld", &n,&k);
//catalan
C[0]=1;
for (i=1;i<=n;++i)
{
t=0;
for (j=0;j<i;++j)
t+=C[j]*C[i-1-j];
C[i]=t;
}
/*for (i=1;i<=n;++i)
printf("%d ", C[i]);*/
solve(1,n,1);
fclose(stdin);
fclose(stdout);
return 0;
}