Cod sursa(job #2751749)

Utilizator StefaniaCriStefania Cristea StefaniaCri Data 15 mai 2021 18:53:27
Problema Planeta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("planeta.in");
ofstream g("planeta.out");
long long catalan[33],k;
int n;
void elucidam(int stanga,int dreapta,long long k)
{   long total=0,i,x,y;
    if(stanga>dreapta) return;
    if(stanga==dreapta){g<<stanga<<" ";
     return;}
    for(i=stanga;i<=dreapta;++i)
    {
        x=catalan[i-stanga];
        y=catalan[dreapta-i];
        total+=x*y;
        if(total>k) break;
    }
      k=k-(total-(x*y));
      g<<i<<" ";
      elucidam(stanga,i-1,k/y);
      elucidam(i+1,dreapta,k%y);
}
int main()
{
    f>>n>>k;
    catalan[0]=1,catalan[1]=1;
    for(int i=2;i<=n;++i)
        for(int j=1;j<=i;++j)
            catalan[i]=catalan[i]+catalan[j-1]*catalan[i-j];
    elucidam(1,n,k-1);
    return 0;
}