Pagini recente » Cod sursa (job #2132904) | Cod sursa (job #1284834) | Cod sursa (job #593024) | Cod sursa (job #2901759) | Cod sursa (job #1234254)
#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