Cod sursa(job #2533359)

Utilizator ezioconnorVlad - Gabriel Iftimescu ezioconnor Data 28 ianuarie 2020 22:17:22
Problema Planeta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

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

long long dp[31];

inline void solve(int st, int dr, long long k) {
    if (st > dr)
        return;
    for (int root = st; root <= dr; ++root) {
        if (dp[root - st] * dp[dr - root] <= k)
            k -= dp[root - st] * dp[dr - root];
        else {
            out << root << " ";
            solve(st, root - 1, k / dp[dr - root]);
            solve(root + 1, dr, k % dp[dr - root]);
            return;
        }
    }
}

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