Cod sursa(job #1554101)

Utilizator Athena99Anghel Anca Athena99 Data 20 decembrie 2015 21:49:18
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;

ifstream fin("planeta.in");
ofstream fout("planeta.out");

typedef long long i64;

const i64 nmax= 30;

i64 d[nmax+1];

void f( i64 l, i64 r, i64 k ) {
    for ( i64 i= l, ok= 0; i<=r && ok==0; ++i ) {
        if ( (i64)d[i-l]*d[r-i]>=k ) {
            fout<<i<<" ";
            ok= 1;

            f(l, i-1, (k-1)/d[r-i]+1);
            f(i+1, r, (k-1)%d[r-i]+1);
        } else {
            k= (i64)k-(i64)d[i-l]*d[r-i];
        }
    }
}

int main(  ) {
    i64 n, k;
    fin>>n>>k;

    d[0]= 1;
    for ( i64 i= 1; i<=n; ++i ) {
        for ( i64 j= 1; j<=i; ++j ) {
            d[i]= (i64)d[i]+(i64)d[j-1]*d[i-j];
        }
    }

    f(1, n, k);

    return 0;
}