Cod sursa(job #1496966)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 5 octombrie 2015 21:22:29
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <cstdio>
#define nmax 35
using namespace std;
int n;
long long d[nmax]={1},k;

void choose(long long k,int x,int y)
{
    if (x>y)
        return;

    int i,j;
    for (i=y-x+1,j=1;d[i-j]*d[j-1]<k&&j<=i;k-=d[i-j]*d[j-1],++j);
    printf("%d ",x+j-1);
    choose((k-1)/d[i-j]+1,x,x+j-2);
    choose((k-1)%d[i-j]+1,x+j,y);
}
int main()
{
    freopen("planeta.in","r",stdin);
    freopen("planeta.out","w",stdout);
    int i,j;
    scanf("%d %lld",&n,&k);
    for (i=1;i<=n;i++)
        for (j=1;j<=i;j++)
            d[i]+=1LL*d[i-j]*d[j-1];
    choose(k,1,n);

    return 0;
}