(附代码【未改变文件输入输出】)
#include <fstream>
#include <string>
#include <stack>
using namespace std;
ifstream cin("expr.in");
ofstream cout("expr.out");
stack<bool> num;
int main(int argc, char **argv)
{
string shizi;
getline(cin, shizi);
int nums;
cin >> nums;
bool x[nums];
for(int i = 0; i < nums; i++)
{
int t;
cin >> t;
x[i] = bool(t);
}
int chgs, chgp;
cin >> chgs;
for(int wit = 0; wit < chgs; wit++)
{
cin >> chgp;
x[chgp-1] = !x[chgp-1]; //begp
for(int i = 0; i < shizi.size(); i++)
{
if(shizi[i] >= '0' && shizi[i] <= '9')
{
num.push(x[shizi[i] - '0' - 1]);
}
if(shizi[i] == '|')
{
bool a, b;
a = num.top();
num.pop();
b = num.top();
num.pop();
num.push(a || b);
}
if(shizi[i] == '&')
{
bool a, b;
a = num.top();
num.pop();
b = num.top();
num.pop();
num.push(a && b);
}
if(shizi[i] == '!')
{
bool a;
a = num.top();
num.pop();
num.push(!a);
}
}
cout << int(num.top()) << endl;
num.pop();
x[chgp-1] = !x[chgp-1]; //endp
}
return 0;
}