Cod sursa(job #1234254)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 26 septembrie 2014 22:45:24
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#define DIM 40
#define infile "planeta.in"
#define outfile "planeta.out"

using namespace std;

ifstream f(infile);
ofstream g(outfile);

long long D[DIM];

long long n, k;

void solve(long long nr, long long left, long long right) {
	if (left > right)
		return;
	if (left == right) {
		g << left << " ";
		return;
	}
	long long i, x = 0;
	for (i = left; i <= right; ++i) {
		x += D[i - left] * D[right - i];
		if (x >= nr) {
			x -= D[i - left] * D[right - i];
			break;
		}
	}
	g << i << " ";
	solve((nr - x - 1) / D[right - i] + 1, left, i - 1);
	solve((nr - x - 1) % D[right - i] + 1, i + 1, right);
}

int main() {
	f >> n >> k;
	D[0] = 1;
	for (long long i = 1; i <= n; ++i)
	for (long long j = 0; j < i; ++j)
		D[i] += D[j] * D[i - j - 1];
	solve(k, 1, n);
	return 0;
}

//This room. This bullet. There's a bullet for everyone. And a time. And a place. Yes... maybe this is how it has to be. - 47