code:
#include<bits/stdc++.h>
using namespace std;
#define stack ssssss
char s[1000015];
int n,q,qf[100015],len;
bool x[100015];
bool stack[100015];
int top=0;
void solve(int p){
int f=0,cnt=0;
for(int i=0;i<len;i++){
if(s[i]=='x')f=1;
else if(f){
if(s[i]>='0'&&s[i]<='9')cnt*=10,cnt+=(int)s[i]-48;
else{
stack[++top]=x[cnt];
if(cnt==p)stack[top]=!stack[top];
cnt=0,f=0;
}
}else{
if(s[i]=='!')stack[top]=!stack[top];
else if(s[i]=='&')stack[top-1]=stack[top]&&stack[top-1],top--;
else if(s[i]=='|')stack[top-1]=stack[top]||stack[top-1],top--;
}
}
}
int main(){
// freopen("expr.in","r",stdin);
// freopen("expr.out","w",stdout);
gets(s);
len=strlen(s);
cin>>n;
for(int i=1;i<=n;i++)cin>>x[i];
cin>>q;
for(int i=1;i<=q;i++){
cin>>qf[i];
solve(qf[i]);
cout<<stack[1]<<endl;
top=0;
}
return 0;
}
在本地devc++可以运行,但是到了luogu上就编译错误