Rt
代码如下
(最好能告诉我为啥以及咋改)
#include<bits/stdc++.h>
using namespace std;
int main()
{
stack<bool>num;
string ex;
getline(cin,ex);
int n,q;
cin>>n;
bool var[n+5],print[n+5];
for(int i=1;i<=n;i++)
{
cin>>var[i];
}
cin>>q;
for(int j=1;j<=q;j++)
{
int change;
cin>>change;
var[change]=!var[change];
for(int i=1;i<=n;i++)
{
num.push(var[i]);
}
for(int i=0;i<ex.length();i++)
{
if(ex[i]==' '||ex[i]=='x')continue;
if(ex[i]>='0'&&ex[i]<='9')num.push(var[ex[i]-'0']);
else
{
bool v1,v2;
v1=num.top();
num.pop();
v2=num.top();
num.pop();
switch(ex[i])
{
case '|':num.push(v1||v2);break;
case '&':num.push(v1&&v2);break;
case '!':num.push(v2);num.push(!v1);break;
}
}
}
print[j]=num.top();
num.pop();
var[change]=!var[change];
}
for(int i=1;i<=q;i++)cout<<print[i]<<endl;
return 0;
}