求助,为什么会爆零
查看原帖
求助,为什么会爆零
124564
Austra楼主2020/11/15 14:35
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s[1000001];
int n,q,num,a[100001],top;
bool x[100001],jl[100001];
int main(){
	//freopen("expr.in","r",stdin);
	//freopen("expr.out","w",stdout);
	gets(s);
	cin>>n;
	for(int i=1;i<=n;i++)cin>>x[i];
	cin>>q;
	for(int i=1;i<=q;i++){
		cin>>num;
		if(a[num]){cout<<a[num];continue;}
		x[num]=(!x[num]);
		for(int i=0;s[i];i++){
			if(s[i]==' ')continue;
			if(s[i]=='x')jl[++top]=x[int(s[i+1]-48)];
			if(s[i]=='!')jl[top]=(!jl[top]);
			if(s[i]=='|'){
				bool p=(jl[top]|jl[top-1]);
				jl[--top]=p;
			}
			if(s[i]=='&'){
				bool p=(jl[top]&jl[top-1]);
				jl[--top]=p;
			}
		}
		a[num]=jl[1];
		cout<<a[num]<<endl;
		x[num]=(!x[num]);
		memset(jl,0,sizeof(jl));
		top=0;
	}
	return 0;
}
2020/11/15 14:35
加载中...