Cod sursa(job #1243455)

Utilizator horatiu11Ilie Ovidiu Horatiu horatiu11 Data 15 octombrie 2014 22:13:17
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
//horatiu11
# include <cstdio>
using namespace std;
int n;
long long k,D[36]={1};
void f(long long k, int a, int n)
{
    int i=n-a+1,j=1;long long s=k;
    if(n<a)return;
    while(D[i-j]*D[j-1]<k && j<=i)
        k-=D[j-1]*D[i-j],++j;
    printf("%d ",a+j-1);
    f((k-1)/D[i-j]+1,a,a+j-2);
    f((k-1)%D[i-j]+1,a+j,n);
}
int main()
{
    freopen("planeta.in","r",stdin);
    freopen("planeta.out","w",stdout);
    scanf("%d%lld",&n,&k);
    for(int i=1;i<=n;++i)
        for(int j=1;j<=i;++j)
            D[i]+=D[i-j]*D[j-1];
    f(k,1,n);
    printf("\n");
}