#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;
}
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; } |
English