WA on#10求条
查看原帖
WA on#10求条
393511
Mobius_CaO楼主2024/9/9 09:27
#include<bits/stdc++.h>
using namespace std;
int checko(string O){
	if(O=="O(1)")return 0;
	if(O[5]==')')return (int)(O[4]-'0');
	return (int)((int)(O[4]-'0')*10+(int)(O[5]-'0'));
}
int numb(string T){
	if(T=="n")return 10000;
	int num=0;
	for(int i=0;i<T.length();i++){
		num*=10;
		num+=T[i]-'0';
	}
	return num;
}
void solve(){
	int n,o;
	string O;
	cin>>n>>O;
	o=checko(O);
	string cz;
	string jl[101];
	map<char,bool> mp;
	for(int i=0;i<n;i++){
		char c;
		cin>>c;
		cz=cz+c;
		if(c=='F'){
			string bl,st,ed;
			cin>>bl>>st>>ed;
			jl[i]=bl+st+" "+ed;
		}
	}
	int ix=0,ib=0,cs[101],maxi=0;
	char stb[101];
	int o1=0;
	for(int i=0;i<=n;i++)cs[i]=0;
	for(int i=0;i<n;i++){
		if(cz[i]=='F'){
			ix++;
			maxi=max(maxi,ix);
			string bl,st,ed;
			bl=jl[i][0];
			int soe=0;
			string num="";
			for(int j=1;j<jl[i].length();j++){
				if(jl[i][j]==' '){
					st=num;
					num="";
					soe=1;
				}
				else num=num+jl[i][j];
			}
			ed=num;
			char bb=bl[0];
			stb[ix]=bb;
			if(mp[bb]==1){
				printf("ERR\n");
				return ;
			}
			mp[bb]=1;
			if(st!="n"&&ed=="n"){
				cs[ix]=1;
			}
			if(st=="n"&&ed!="n"&&cs[ix]!=1&&ix>=maxi||numb(st)>numb(ed))cs[ix]=-1;
		}
		else {
			if(ix<=0){
				printf("ERR\n");
				return ;
			}
			mp[stb[ix]]=0;
			cs[ix+1]=0;
			ix--;
			int o2=0;
			for(int j=0;j<n;j++){
				if(cs[j]==1)o2++;
				if(cs[j]==-1)break;
			}
			o1=max(o1,o2);
		}
		maxi=max(maxi,ix);
	}
	if(ix!=0){
		printf("ERR\n");
		return ;
	}
	int o2=0;
	for(int i=0;i<n;i++){
		if(cs[i]==1)o2++;
		if(cs[i]==-1)break;
	}
	o1=max(o1,o2);
	if(o1==o)printf("Yes\n");
	else{
		printf("No\n");
	} 
}
int main(){
	int _;
	scanf("%d",&_);
	while(_--){
		solve();
	}
	return 0;
}
2024/9/9 09:27
加载中...