Advertisement
FHVirus

Untitled

Dec 11th, 2021
1,244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.63 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int MOD = 1e9 + 7;
  5. int mad(int u, int v) {
  6.     u += v - MOD;
  7.     u += MOD & (u >> 31);
  8.     return u;
  9. }
  10.  
  11. const int kN = 2002;
  12. int N;
  13. string S;
  14. int dp[kN][kN];
  15.  
  16. signed main(){
  17.     ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  18.  
  19.     cin >> N >> S;
  20.  
  21.     S = ' ' + S;
  22.     dp[0][0] = 1;
  23.     for (int i = 1; i <= N; ++i) {
  24.         if (S[i] == '[' or S[i] == '?')
  25.             for (int j = 1; j <= i; ++j)
  26.                 dp[i][j] = mad(dp[i][j], dp[i-1][j-1]);
  27.         if (S[i] == ']' or S[i] == '?')
  28.             for (int j = 0; j <= i; ++j)
  29.                 dp[i][j] = mad(dp[i][j], dp[i-1][j+1]);
  30.     }
  31.    
  32.     cout << dp[N][0] << '\n';
  33.  
  34.     return 0;
  35. }
  36.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement