题目传送门
错误情况
#include<bits/stdc++.h>
using namespace std;
map<char,int> mp;
stack<char> T;
int ner[100010],len;
int num(string s){
int sum=1,ans=0;
for(int i=s.size()-1;i>=0;i--){
if('0'<=s[i]&&s[i]<='9'){
ans+=(s[i]-'0')*sum;
sum*=10;
}
else if(i!=s.size()-1) break;
}
return ans;
}
int main(){
cin.tie(nullptr) -> ios::sync_with_stdio(false);
int t; cin>>t;
while(t--){
mp.clear(); while(!T.empty()) T.pop();
memset(ner,0,sizeof(ner)); len=0;
int p,sum1=0,sum2=0,sum3=0,mx=0,flg=0;
string s;
cin>>p>>s;
while(p--){
char F,a; string b,c;
cin>>F;
if(F=='F'){
cin>>a>>b>>c;
if(mp[a]!=1){ mp[a]=1; T.push(a);}
else{ flg=1;}
sum1++;
if( (b=="n")&&('0'<=c[0]&&c[0]<='9')||('0'<=b[0]&&b[0]<='9')&&('0'<=c[0]&&c[0]<='9')&&num(b)>num(c))
{ner[++len]=3; sum3++;}
if( ('0'<=b[0]&&b[0]<='9')&&('0'<=c[0]&&c[0]<='9') || b==c)
if(sum3==0){ ner[++len]=1;}
if( ('0'<=b[0]&&b[0]<='9')&&(c=="n") ){
if(sum3==0){
ner[++len]=2;
sum2++;
mx=max(mx,sum2);
}
}
}
else if(F=='E'){
sum1--;
if(!T.empty()){
char cn=T.top();
mp[cn]=0;
T.pop();
}
if(ner[len]==2) sum2--;
if(ner[len]==3) sum3--;
len--;
}
}
if(flg==1||sum1!=0) cout<<"ERR\n";
else{
if(mx==0&&s.size()==4) cout<<"Yes\n";
else if(mx==0) cout<<"No\n";
if(mx!=0&&s.size()>4){
if(num(s)==mx) cout<<"Yes\n";
else cout<<"No\n";
}
else if(mx!=0) cout<<"No\n";
}
}
}