Cod sursa(job #625488)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 24 octombrie 2011 20:20:10
Problema Planeta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<cstdio>

typedef long long i64;

i64 a[35],b[35];

void fct(i64 x,i64 y,i64 k)
{
    if (x>y)
        return;
    if (x==y)
    {
        printf("%d ",x);
        return;
    }
    i64 p=0,i;
    for(i=x;i<=y;++i)
        if((p+=b[i-x]*b[y-i])>=k)
        {
            p-=b[i-x]*b[y-i];
            break;
        }
    printf("%d ",i);
    fct(x,i-1,(k-p-1)/b[y-i]+1);
    fct(i+1,y,(k-p-1)%b[y-i]+1);
}

int main()
{
    int n,i,j,k;
    freopen("planeta.in","r",stdin);
    freopen("planeta.out","w",stdout);
    scanf("%lld%lld",&n,&k);
    b[0]=1;
    for(i=1;i<=n;++i)
        for(j=0;j<i;++j)
            b[i]+=b[j]*b[i-j-1];
    fct(1,n,k);
    printf("\n");
    return 0;
}