WA了,求帮助
#include<bits/stdc++.h>
#define ll long long
using namespace std;
stack<ll>q;//栈,模拟后缀表达式
ll n,que,c;
map<string,ll>mp;//map映射Xi的值
ll a[100010];
string s;
ll cal(string s){
s+=" ";
string sp="";//记录读入的字符串,如Xi
while(q.size())q.pop();
for(ll i=0;i<s.size();i++){
if(s[i]=='&'||s[i]=='|'){//&&运算或||运算
ll k=q.top();
q.pop();
ll p=q.top();
q.pop();
if(s[i]=='&'){
q.push(k&&p);
}
else{
q.push(k||p);
}
}
else if(s[i]=='!'){//!运算
ll k=q.top();
q.pop();
q.push(!k);
}
else if(s[i]==' '){//压入值
if(sp.size()>0)
q.push(mp[sp]);
sp="";
}
else{
sp+=s[i];
}
}
return q.top();
}
string base="x";
signed main(){
getline(cin,s);
cin>>n;
for(ll i=1;i<=n;i++){
cin>>a[i];
base="x";
base+=(char)(i+'0');//Xi
mp[base]=a[i];//映射
}
cin>>que;
while(que--){
cin>>c;
base="x";
base+=(char)(c+'0');
mp[base]=!mp[base];
ll ans=cal(s);
cout<<ans<<endl;
mp[base]=!mp[base];
}
return 0;
}