实在不知道怎么降低了,求助。
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
string s;
bool a[100001],b[100001];
int main(){
getline(cin,s);
int n,q,c,t;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
cin>>q;
for(int z=1;z<=q;z++){
cin>>c;
a[c]=!a[c];
t=0;
for(int j=0;j<s.size();j++){
if(s[j]=='x'){
int l=0;
while(s[++j]!=' ')
l=l*10+s[j]-'0';
b[++t]=a[l];
continue;
}
else if(s[j]=='!'){
b[t]=!b[t];
continue;
}
else if(s[j]=='&'){
b[t-1]=b[t-1]&b[t];
t--;
continue;
}
else if(s[j]=='|'){
b[t-1]=b[t-1]|b[t];
t--;
continue;
}
}
cout<<b[1]<<endl;
a[c]=!a[c];
}
return 0;
}