不知道咋错了,赛场上说无法继续运行,洛谷说 $MLE$
查看原帖
不知道咋错了,赛场上说无法继续运行,洛谷说 $MLE$
160150
WxjzKK楼主2020/11/8 12:13
#include<iostream>
#include<string>
#include<stack>
using namespace std;
bool x[100001];
stack<int>sta;
string st;
int pos=0; 
string sub()
{
	if (st[pos]!=' ') return st[pos++]+sub();
}
bool jisuan()
{
	switch(sta.top())
	{
		case -1:
		{
			sta.pop();return x[jisuan()]&x[jisuan()];
		}
		case -2:
		{
			sta.pop();return x[jisuan()]|x[jisuan()];
		}
		case -3:
		{
			sta.pop();return !x[jisuan()];
		}
		default:
		{
			int num=sta.top();sta.pop();return num;
		}
	}
}
int main()
{
	freopen("expr.in","r",stdin);
	freopen("expr.out","w",stdout);
	int n,q,c;
	getline(cin,st);
	while (pos<st.size())
	{
		string s=sub();
		if (s=="&"||s=="|"||s=="!")
		{
			if (s=="&") sta.push(-1);
			else if (s=="|") sta.push(-2);
			else if (s=="!") sta.push(-3);
		}
		else
		{
			int sum=0;
			for (int i=1;i<st.size();++i)
			{
				sum*=10;sum+=st[i]-'0';
			}
			sta.push(sum);
		}
	}
	cin>>n;
	for (int i=1;i<=n;++i) cin>>x[i];
	cin>>q;
	for (int i=1;i<=q;++i)
	{
		cin>>c;
		x[c]=!x[c];
		cout<<jisuan()<<endl;
		x[c]=!x[c];
	}
	return 0;
}

2020/11/8 12:13
加载中...