Cod sursa(job #3345725)

Utilizator CheeseEaterHackRoman Alex CheeseEaterHack Data 10 martie 2026 19:34:59
Problema Planeta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");

int n;
long long k, catalan[31];

void recursiv(int st, int dr, long long k)
{
    if (st>dr)
    {
        return;
    }
    long long posib;
    for (int i=st; i<=dr; i++)
    {
        int stg=i-st, drp=dr-i;
        posib=catalan[stg]*catalan[drp];
        if (posib<k)
        {
            k-=posib;
        }
        else
        {
            fout<<i<<" ";
            long long kst=(k-1)/catalan[drp]+1;
            long long kdr=(k-1)%catalan[drp]+1;
            recursiv(st, i-1, kst);
            recursiv(i+1, dr, kdr);
            return;
        }
    }
}

int main()
{
    fin>>n>>k;
    catalan[0]=1;
    for (int i=1; i<=n; i++)
    {
        for (int j=0; j<i; j++)
        {
            catalan[i]+=catalan[j]*catalan[i-1-j];
        }
    }
    recursiv(1, n, k);

    return 0;
}