1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include<bits/stdc++.h>
using namespace std;
string read(){
  int n; char c; cin>>n>>c;
  string s;
  for(int i=0;i<n;i++){
    int x; cin>>x;
    s+=string(x,c);
    c=c=='('?')':'(';
  }
  return s;
}
int main(){
  ios::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  auto s=read(),t=read();
  int n=s.length(),m=t.length();
  vector<int> ss(n+1),st(m+1);
  for(int i=0;i<n;i++)
    ss[i+1]=ss[i]+(s[i]=='('?1:-1);
  for(int i=0;i<m;i++)
    st[i+1]=st[i]+(t[i]=='('?1:-1);
  int w=0;
  vector f(n+1,vector<int>(m+1));
  for(int p=0;p<m;p++){
    for(int i=0;i<=n;i++)
      fill(f[i].begin(),f[i].end(),0);
    f[0][p]=1;
    for(int i=0;i<=n;i++)
      for(int j=p;j<=m;j++)
        if(f[i][j]){
          int c=ss[i]+st[j]-st[p];
          if(i<n&&(s[i]=='('||c>0))f[i+1][j]=1;
          if(j<m&&(t[j]=='('||c>0))f[i][j+1]=1;
        }
    for(int j=p+1;j<=m;j++)
      if(f[n][j]&&!(ss[n]+st[j]-st[p]))w++;
  }
  cout<<w<<endl;
  return 0;
}