Cod sursa(job #2898275)

Utilizator fredtuxFlorin Dinu fredtux Data 6 mai 2022 15:45:33
Problema Planeta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <vector>
#include <sstream>

using namespace std;

ifstream fin("planeta.in");
ofstream fout("planeta.out");

int n, i, j;
long long k;
vector<long long> result(31, 0);
stringstream *buff = new stringstream();

void operator>>(stringstream &strstr, ofstream &out) {
    out << strstr.str();
}

inline void planeta(int r, long long kk, int l) {
    int ii;
    for (ii = l; result[ii - l] * result[r - ii] <= kk && ii <= r; ++ii) {
        kk -= result[ii - l] * result[r - ii];
    }

    *buff << ii << ' ';

    if (ii > l) {
        planeta(ii - 1, kk / result[r - ii], l);
    }
    if (ii < r) {
        planeta(r, kk % result[r - ii], ii + 1);
    }
}

int main() {
    fin >> n >> k;

    result[0] = 1;
    result[1] = 1;
    for (i = 2; i <= n; ++i) {
        for (j = 1; j <= i; ++j) {
            result[i] += result[i - j] * result[j - 1];
        }
    }

    planeta(n, k - 1, 1);

    *buff >> fout;

    return 0;
}