Cod sursa(job #2899440)

Utilizator Andoss1710Balanica Andrei Andoss1710 Data 8 mai 2022 20:05:39
Problema Planeta Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int bst[30], preordine[30], ipre = 0;
void rezolvare(int f, int l, long long int perm){
    //cout<<f<<" "<<l<<endl;
    if(f <= l){
        int i;
        for(i = f; i <= l; i++){
            int arb = bst[i-f] * bst[l-i];
            if(perm >= arb)
                perm = perm-arb;
            else{
                preordine[ipre] = i;
                //cout<<i<<endl;
                ipre++;
                break;
            }
        }
    rezolvare(f, preordine[ipre-1]-1, perm/bst[l-preordine[ipre-1]]);
    rezolvare(i+1, l, perm%bst[l-i]);
    }
    else{
        return;
    }
}
int main()
{
    int N;
    long long int K;
    fin>>N>>K;
    bst[0] = bst[1] = 1;
    for(int i = 2; i<N; i++){
    for(int j = 0; j<i; j++){
        bst[i] = bst[i] + bst[j]*bst[i-j-1];
    }
    }
    rezolvare(1, N, K-1);
    for(int i = 0; i<ipre; i++)
        fout<<preordine[i]<<" ";
}