求助大佬,90分,WA#13,C++
查看原帖
求助大佬,90分,WA#13,C++
746659
airflow楼主2022/8/21 15:44

RT,有人知道#13的测试点是什么吗?hack数据都可以过

#include <iostream>
using namespace std;
int n=1,bb,nn;
struct node{
	string name;
	int before;
	int now;
	int after;
};
node a[300];
bool check(string t){
	if(t=="false" || t=="true"){
		return 1;
	}
	return 0;
}
int main(){
	a[0].after=1;
	while(cin>>a[n].name){
		a[n].now=n;
		a[n].before=n-1;
		a[n].after=n+1;
		n++;
	}
	for(int i=1;i<=n;i++){
		if(a[i].name=="not" && a[i-1].name=="not"){
			a[i].name="nnot";
			a[i].before=a[i-1].before;
			a[a[i-1].before].after=a[i-1].after;
		}
		else if(a[i].name=="not" && a[i-1].name=="nnot"){
			a[i].name="not";
			a[i].before=a[i-1].before;
			a[a[i-1].before].after=a[i-1].after;
		}
	}
	for(int i=a[0].after;i<=n;i++){
		if(a[i].name=="not"){
			if(a[a[i].after].name=="true"){
				a[a[i].after].name="false";
			}
			else if(a[a[i].after].name=="false"){
				a[a[i].after].name="true";
			}
			else{
				cout<<"error"<<endl;
				return 0;
			}
			a[a[i].before].after=a[i].after;
			a[a[i].after].before=a[i].before;
		}
		else if(a[i].name=="nnot"){
			if(!((a[a[i].after].name=="false")&&(a[a[i].after].name=="true"))){
				cout<<"error"<<endl;
				return 0;
			}
			a[a[i].before].after=a[i].after;
			a[a[i].after].before=a[i].before;
		}
	}
	for(int i=a[0].after;i<=n;i++){
		if(a[i].name=="and"){
			if(a[a[i].before].name=="true" && a[a[i].after].name=="true"){
				a[i].name="true";
				bb=a[a[i].before].before;
				nn=a[a[i].after].after;
				a[bb].after=i;
				a[nn].before=i;
				a[i].before=bb;
				a[i].after=nn;
				
			}
			else if(check(a[a[i].before].name) && check(a[a[i].after].name)){
				a[i].name="false";
				bb=a[a[i].before].before;
				nn=a[a[i].after].after;
				a[bb].after=i;
				a[nn].before=i;
				a[i].before=bb;
				a[i].after=nn;
			}
			else{
				cout<<"error"<<endl;
				return 0;
			}
		}
	}
	for(int i=a[0].after;i<=n;i++){
		if(a[i].name=="or"){
			if(a[a[i].before].name=="true" || a[a[i].after].name=="true"){
				a[i].name="true";
				bb=a[a[i].before].before;
				nn=a[a[i].after].after;
				a[bb].after=i;
				a[nn].before=i;
				a[i].before=bb;
				a[i].after=nn;
				
			}
			else if(check(a[a[i].before].name) && check(a[a[i].after].name)){
				a[i].name="false";
				bb=a[a[i].before].before;
				nn=a[a[i].after].after;
				a[bb].after=i;
				a[nn].before=i;
				a[i].before=bb;
				a[i].after=nn;
			}
			else{
				cout<<"error"<<endl;
				return 0;
			}
		}
	}
	if(a[a[a[0].after].after].name!=""){
		cout<<"error"<<endl;
		return 0;
	}
	else if(!check(a[a[0].after].name)){
		cout<<"error"<<endl;
		return 0;
	}
	cout<<a[a[0].after].name<<endl;
	return 0;
}
2022/8/21 15:44
加载中...