Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int n, k;
- cin >> n >> k;
- vector<vector<int>> dp(2 * n + 1, vector<int>(2 * n + 1));
- dp[0][0] = 1;
- for (int i = 1; i <= 2 * n; i++)
- {
- for (int bal = 0; bal <= 2 * n; bal++)
- {
- if (bal > 0)
- {
- dp[i][bal] = dp[i - 1][bal - 1];
- }
- if (bal < n)
- {
- dp[i][bal] += dp[i - 1][bal + 1];
- }
- }
- }
- if (dp[2 * n][0] <= k)
- {
- cout << "N/A";
- return 0;
- }
- vector<char> ans(2 * n);
- int bal = 0;
- for (int i = 0; i < 2 * n; i++)
- {
- if (k < dp[2 * n - i - 1][bal + 1])
- {
- ans[i] = '(';
- bal++;
- }
- else
- {
- k -= dp[2 * n - i - 1][bal + 1];
- ans[i] = ')';
- bal--;
- }
- }
- for (int i = 0; i < 2 * n; i++)
- {
- cout << ans[i];
- }
- return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement