Cod sursa(job #258229)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 14 februarie 2009 21:22:38
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
# include <stdio.h>
int N,L,S[32];
long long K,C[32];
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 rec(int st, int dr, long long K)
{
    int i;
    for (i=st;i<=dr && C[i-st]*C[dr-i]<=K;++i)
	K-=C[i-st]*C[dr-i];
    printf("%d ",i);
    if (st<=i-1) rec(st,i-1,K/C[dr-i]);
    if (i+1<=dr) rec(i+1,dr,K%C[dr-i]);
}
int main()
{
    int i, j;
    freopen("planeta.in", "r", stdin);
    freopen("planeta.out", "w", stdout);
    scanf("%d %lld",&N,&K);
    catalan();
    rec(1,N,K-1);
    return 0;
}