Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using ll = long long;
- constexpr int N = 5e3 + 5;
- constexpr ll mod = 1e9 + 7;
- int n, k, x;
- string s;
- int dp[N][N];
- void Read()
- {
- cin >> k >> s;
- n = s.size();
- s = " " + s;
- }
- int f(int i, int sum)
- {
- if (i == n + 1)
- return sum == 0;
- int &ans = dp[i][sum];
- if (ans != -1)
- return ans;
- ans = 0;
- ans = f(i + 1, sum) % mod;
- if (sum + (s[i] == '(' ? 1 : -1) <= x && sum + (s[i] == '(' ? 1 : -1) >= 0)
- (ans += f(i + 1, sum + (s[i] == '(' ? 1 : -1)) % mod) % mod;
- return ans;
- }
- int g(int v)
- {
- x = v;
- memset(dp, -1, sizeof dp);
- return f(1, 0);
- }
- void Solve()
- {
- cout << ((g(k) - g(k - 1)) % mod + mod) % mod;
- }
- int32_t main()
- {
- ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- Read();
- Solve();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement