Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- long long n, p, dp[100][100];
- vector<char> ans;
- int main() {
- cin >> n >> p;
- dp[0][0] = 1;
- for(int i = 1; i <= 2 * n; i++) {
- dp[i][0] = dp[i - 1][1];
- for(int b = 1; b <= i; b++) {
- dp[i][b] = dp[i - 1][b - 1] + dp[i - 1][b + 1];
- }
- }
- if(dp[2 * n][0] <= p) {
- cout << "N/A" << '\n';
- return 0;
- }
- p++;
- int b = 0;
- for(int i = 0; i <= 2 * n; i++) {
- if(p <= dp[2 * n - i - 1][b + 1]) {
- b++;
- ans.push_back('(');
- } else {
- p -= dp[2 * n - i - 1][b + 1];
- b--;
- ans.push_back(')');
- }
- }
- for(int i = 0; i < ans.size() - 1; i++) {
- cout << ans[i];
- }
- cout << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment