Cod sursa(job #257732)

Utilizator VmanDuta Vlad Vman Data 13 februarie 2009 21:35:04
Problema Planeta Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#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;
}