Cod sursa(job #2899251)

Utilizator iioaaana777Ghergu Ioana iioaaana777 Data 8 mai 2022 13:01:00
Problema Planeta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#define NMAX 31
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");

int N;
long long K, x[NMAX];

void tree(int st, int dr, long long k)
{
    int i;
    long long dif;

    for(i = st; i <= dr; ++i)
        if( k > x[i - st] * x[dr - i])
            k -= x[i - st] * x[dr - i];
        else
            {
                fout<<i<<" ";
                tree(st, i - 1, 1 + (k - 1) / x[dr - i]);
                dif = k % x[dr - i];
                if(dif == 0)
                    dif = x[dr - i];
                tree(i + 1, dr, dif);
                break;
            }

}
int main()
{
    fin>>N>>K;

    x[0] = x[1] = 1;

    for(int i = 2; i <= N; ++i)
        for(int j = 0; j < i; ++j)
            x[i] += x[i - j - 1] * x[j];

    tree(1, N, K);


    return 0;
}