Dang_Quan_10_Tin

BR1

Jul 12th, 2022 (edited)
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.56 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int nmax = 5011, base = 1e9 + 7;
  5.  
  6. int n;
  7. int f[nmax][nmax][2];
  8. char A[nmax];
  9.  
  10. int dp(int i, int d, int ok){
  11.     if (i == n) return d==0;
  12.     auto &r = f[i][d][ok];
  13.     if (r != -1) return r;
  14.     r = 0;
  15.     for (char c : {'(', ')'}){
  16.         if ((c <= A[i] || ok) && (d > 0 || c == '('))
  17.             r += dp(i+1, d + (c=='('?1:-1), ok || c < A[i]);
  18.     }
  19.     r %= base;
  20.     return r;
  21. }
  22.  
  23. int32_t main(){
  24.     scanf("%s", A);
  25.     n = strlen(A);
  26.     memset(f,255,sizeof(f));
  27.     cout << dp(0, 0, 0);
  28. }
  29.  
Add Comment
Please, Sign In to add comment