我的代码:
#include<bits/stdc++.h>
using namespace std;
string s;
vector<int>a;
stack<int>stk;
void f(){
for(int i=0;i<=s.size();i++){
if(s[i]=='x'){
int num=s[i+1]-'0'-1;
stk.push(a[num]);
}else if(s[i]=='&'){
int x=stk.top();
stk.pop();
int y=stk.top();
stk.pop();
stk.push(y&&x);
}else if(s[i]=='|'){
int x=stk.top();
stk.pop();
int y=stk.top();
stk.pop();
stk.push(y||x);
}else if(s[i]=='!'){
int x=stk.top();
stk.pop();
stk.push(!x);
}
}
cout<<stk.top()<<endl;
while(!stk.empty()) stk.pop();
}
int main(){
// freopen("P7073_1.in","r",stdin);
// freopen("P7073_1.out","w",stdout);
int n,qs;
getline(cin,s);
cin>>n;
for(int i=0;i<n;i++){
int x;
cin>>x;
a.push_back(x);
}
cin>>qs;
for(int i=0;i<qs;i++){
int x;
cin>>x;
a[x-1]=!a[x-1];
f();
a[x-1]=!a[x-1];
}
return 0;
}