5分过样例,求助大佬!
查看原帖
5分过样例,求助大佬!
929763
Pianmu楼主2023/7/12 14:45
# include <bits/stdc++.h>
using namespace std;
const int maxn=10000100;
string s;
int x[maxn],n,q,cnt=0;
int len;
int number[maxn];
stack <int> a;
int doit(int ch)
{
	x[ch]=!x[ch];
	for (int i=0;i<len;i++)
	{
		if (s[i]=='x')
		{
			++cnt;
			int j=i+1,tmp=0;
			while (s[j]!=' ')
			{
				number[cnt]+=tmp*10+(s[j]-'0');
				tmp++;j++;
			}
			a.push(x[number[cnt]]);
		}
		if (s[i]=='|')
		{
			int t1=a.top();
			a.pop();
			int t2=a.top();
			a.pop();
			int tmp=t1|t2;
			a.push(tmp);
		}
		if (s[i]=='&')
		{
			int t1=a.top();
			a.pop();
			int t2=a.top();
			a.pop();
			int tmp=t1&t2;
			a.push(tmp);
		}
		if (s[i]=='!')
		{
			int tmp=a.top();
			a.pop();
			tmp=!tmp;
			a.push(tmp);
		}
	}
	int result=a.top();
	a.pop();
	x[ch]=!x[ch];
	return result;
}
int main()
{
	getline(cin,s);
	len=s.length();
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		cin>>x[i];
	}
	cin>>q;
	while(q--)
	{
		int temp;
		cin>>temp;
		int ans=doit(temp);
		cout<<ans<<endl;
	}
	return 0;
}
2023/7/12 14:45
加载中...