Cod sursa(job #2751020)

Utilizator gabrielanideleaNidelea Gabriela-Andreea gabrielanidelea Data 13 mai 2021 21:15:29
Problema Planeta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("planeta.in");
ofstream g("planeta.out");
unsigned short n;
long long k;
long long p[33];
void func(int x)
{
    p[0] = 1;
    for(int i = 1; i <= x; ++i)
        for(int j = 1; j <= i; ++j)
           p[i] += p[j - 1]*p[i - j];
}
void gasire(short start, short n, long long k)
{
    cout << k << " ";
    if(n == 0)
       return;
    if(n == 1)
    {
       g << start + 1<<" ";
       return;
    }

    for(int i = 1 ; i <= n; i++)
    {   if(p[i - 1]*p[n - i] >= k)
        {
           g << start + i<<" ";
           gasire(start, i - 1, (k - 1)/p[n - i] + 1);
           gasire(start+i, n - i, (k - 1)%p[n - i] + 1);
           return;
        }
       k -= p[i - 1]*p[n - i];
    }
}

int main()
{
  f>>n>>k;
  func(n);
  gasire(0,n,k);
  return 0;
}