Cod sursa(job #3133719)

Utilizator TediCutuTudor Chitu TediCutu Data 26 mai 2023 17:37:28
Problema Planeta Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<bits/stdc++.h>
using namespace std;
ifstream in("planeta.in");
ofstream out("planeta.out");

long v[30], n, k, st, dr, total;

void sol(long n, long k, long val)
{
	if (n == 1) {
		out << val + 1 << " ";
		return;
	}
	for (long i = 1; i <= n; i++)
	{
		st = v[i - 1];
		dr = v[n - i];
		total = st * dr;

		if (total < k)
			k -= total;
		else
		{
			out << val + i << ' ';

			sol(i - 1, (k - 1) / dr + 1, val);
			sol(n - i, (k - 1) % dr + 1, val + i);
			return;
		}
	}
}

int main()
{
	in >> n >> k;
	v[0] = 1;
	for (long i = 1; i <= n; i++)
		for (long j = 1; j <= i; j++)
			v[i] += v[i - j] * v[j - 1];
    ///in v - cati bts exista pt n
    //for (long i = 1; i <= n; i++)
        //cout<<v[i]<< ' ';

	sol(n, k, 0);
}