georgiy110802

Untitled

Aug 3rd, 2021
597
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. long long n, p, dp[100][100];
  8. vector<char> ans;
  9.  
  10. int main() {
  11.     cin >> n >> p;
  12.     dp[0][0] = 1;
  13.     for(int i = 1; i <= 2 * n; i++) {
  14.         dp[i][0] = dp[i - 1][1];
  15.         for(int b = 1; b <= i; b++) {
  16.             dp[i][b] = dp[i - 1][b - 1] + dp[i - 1][b + 1];
  17.         }
  18.     }
  19.     if(dp[2 * n][0] <= p) {
  20.         cout << "N/A" << '\n';
  21.         return 0;
  22.     }
  23.     p++;
  24.     int b = 0;
  25.     for(int i = 0; i <= 2 * n; i++) {
  26.         if(p <= dp[2 * n - i - 1][b + 1]) {
  27.             b++;
  28.             ans.push_back('(');
  29.         } else {
  30.             p -= dp[2 * n - i - 1][b + 1];
  31.             b--;
  32.             ans.push_back(')');
  33.         }
  34.     }
  35.     for(int i = 0; i < ans.size() - 1; i++) {
  36.         cout << ans[i];
  37.     }
  38.     cout << '\n';
  39.     return 0;
  40. }
RAW Paste Data