Cod sursa(job #2752618)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 18 mai 2021 18:49:40
Problema Planeta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<bits/stdc++.h>

using namespace std;

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

long long d[40];

void Count_bst( int l, int r, long long k ) {
    int root;

    for( root = l; root <= r && d[root - l] * d[r - root] <= k; root++ ) {
        k -= d[root - l] * d[r - root];
        //test = i;
    }

    fout << root << ' ';

    if( l < root )
        Count_bst( l, root - 1, k / d[r - root] );
    if( root < r )
        Count_bst( root + 1, r, k % d[r - root] );
}

int main()
{
    int N;
    long long K;

    fin >> N >> K;

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

    Count_bst( 1, N, K - 1 );

    return 0;
}