46pts求助
查看原帖
46pts求助
785964
zzhbpyy楼主2024/5/11 13:23
#include<bits/stdc++.h>
using namespace std;
int n;
string s,h[105];
unordered_map<string,int>mp;
stack<int>st;
stack<string>ww;
signed main(){
	int t;cin>>t;
	while(t--){
		mp.clear();
		string u,v;
		cin>>n>>u;
		getline(cin,v);
		int tmp=0,ans=0;bool ok=true,nj=false;
		for(int i=1;i<=n;i++){
			getline(cin,s);
			if(!ok)continue;
			if(s[0]=='F')ans++;
			else{
				ans--;
				if(ans<0){
					ok=false;
					continue;
				}
				mp[ww.top()]=false;ww.pop();
				if(st.top()==-1){
					st.pop();
					continue;
				}
				tmp+=st.top();
				st.pop();
				continue;
			}
			int ct=2;string c="",d="",e="";
			for(;ct<s.length();ct++){
				if(s[ct]==' ')break;
				else c+=s[ct];
			}ct++;
			for(;ct<s.length();ct++){
				if(s[ct]==' ')break;
				else d+=s[ct];
			}ct++;
			for(;ct<s.length();ct++)e+=s[ct];
			if(mp[c]){ok=false;continue;}
			mp[c]=true;
			ww.push(c);
			int flag=0;
			if(e=="n"&&d!="n")flag++;
			if(e!="n"&&d=="n")flag=-1;
			if(flag!=-1)st.push(max(flag,tmp));
			else{
				st.push(-1);
				if(i==1)nj=true;
			}
			tmp=0;
		}
		if(!ok||ans!=0)cout<<"ERR\n";
		else if((nj||tmp==0)&&u=="O(1)")cout<<"Yes\n";
		else{
			int num=0;
			for(int i=4;i<u.length()-1;i++)num=10*num+u[i]-'0';
			if(num==tmp)cout<<"Yes\n";
			else cout<<"No\n";
		}
	}
	return 0;
}
2024/5/11 13:23
加载中...