Cod sursa(job #1234253)

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

using namespace std;

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

int D[DIM];

int n, k;

void solve(int nr, int left, int right) {
	if (left > right)
		return;
	if (left == right) {
		g << left << " ";
		return;
	}
	int 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 (int i = 1; i <= n; ++i)
	for (int 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