Advertisement
Dang_Quan_10_Tin

BK1

Jul 12th, 2022
904
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. using ll = long long;
  5.  
  6. constexpr int N = 5e3 + 5;
  7. constexpr ll mod = 1e9 + 7;
  8. int n, k, x;
  9. string s;
  10. int dp[N][N];
  11.  
  12. void Read()
  13. {
  14.     cin >> k >> s;
  15.     n = s.size();
  16.     s = " " + s;
  17. }
  18.  
  19. int f(int i, int sum)
  20. {
  21.     if (i == n + 1)
  22.         return sum == 0;
  23.  
  24.     int &ans = dp[i][sum];
  25.  
  26.     if (ans != -1)
  27.         return ans;
  28.  
  29.     ans = 0;
  30.     ans = f(i + 1, sum) % mod;
  31.  
  32.     if (sum + (s[i] == '(' ? 1 : -1) <= x && sum + (s[i] == '(' ? 1 : -1) >= 0)
  33.         (ans += f(i + 1, sum + (s[i] == '(' ? 1 : -1)) % mod) % mod;
  34.  
  35.     return ans;
  36. }
  37.  
  38. int g(int v)
  39. {
  40.     x = v;
  41.     memset(dp, -1, sizeof dp);
  42.     return f(1, 0);
  43. }
  44.  
  45. void Solve()
  46. {
  47.     cout << ((g(k) - g(k - 1)) % mod + mod) % mod;
  48. }
  49.  
  50. int32_t main()
  51. {
  52.     ios::sync_with_stdio(0);
  53.     cin.tie(0);
  54.     cout.tie(0);
  55.     Read();
  56.     Solve();
  57. }
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement