为什么用不了gets()
查看原帖
为什么用不了gets()
710862
thrX楼主2023/10/11 20:18

code:

#include<bits/stdc++.h>
using namespace std;
#define stack ssssss
char s[1000015];
int n,q,qf[100015],len;
bool x[100015];
bool stack[100015];
int top=0;
void solve(int p){
	int f=0,cnt=0;
	for(int i=0;i<len;i++){
		if(s[i]=='x')f=1;
		else if(f){
			if(s[i]>='0'&&s[i]<='9')cnt*=10,cnt+=(int)s[i]-48;
			else{
				stack[++top]=x[cnt];
				if(cnt==p)stack[top]=!stack[top];
				cnt=0,f=0;
			}
		}else{
			if(s[i]=='!')stack[top]=!stack[top];
			else if(s[i]=='&')stack[top-1]=stack[top]&&stack[top-1],top--;
			else if(s[i]=='|')stack[top-1]=stack[top]||stack[top-1],top--;
		}
	}
}
int main(){

//	freopen("expr.in","r",stdin);
//	freopen("expr.out","w",stdout);
	gets(s);
	len=strlen(s);
	cin>>n;
	for(int i=1;i<=n;i++)cin>>x[i];
	cin>>q;
	for(int i=1;i<=q;i++){
		cin>>qf[i];
		solve(qf[i]);
		cout<<stack[1]<<endl;
		top=0;
	}


	return 0;
}

在本地devc++可以运行,但是到了luogu上就编译错误

2023/10/11 20:18
加载中...