过样例但提交全WA,下载了样例#1之后发现输出和标答是一样的,请问这是怎么回事呢
#include<map>
#include<stack>
#include<string>
#include<cstdio>
#include<iostream>
using namespace std;
int T,L,ans;
string s[105];
bool isdigit(char c){
return c>='0'&&c<='9';
}
int check(){
map<char,int> mp;
stack<char> st;
for(int i=1;i<=L;i++){
if(s[i]=="E"){
if(st.empty()) return 0;
else mp[st.top()]=0,st.pop();
}
else{
char name,x,y;
sscanf(s[i].data(),"F %c %c %c",&name,&x,&y);
if(mp[name]==1) return 0;
st.push(name),mp[name]=1;
}
}
if(!st.empty()) return 0;
return 1;
}
int calc(){
int cnt=0,asw=0,ret=0;
map<char,int> mp;
stack<char> st;
for(int i=1;i<=L;i++){
if(s[i]=="E"){
if(mp[st.top()]==1) cnt--;
if(mp[st.top()]==2) asw--;
mp[st.top()]=0;st.pop();
}
else{
char name;
int x,y;
int num=sscanf(s[i].data(),"F %c %d %d",&name,&x,&y);
st.push(name);
if((num==3&&x>y)||num==1){
cnt++,mp[name]=1;
}
else if(!cnt&&num==2) asw++,mp[name]=2;
}
ret=max(ret,asw);
}
return ret;
}
void solve(){
cin>>L;
string time;cin>>time;
if(time=="O(1)") ans=0;
else sscanf(time.data(),"O(n^%d)",&ans);
for(int i=0;i<=L;i++) getline(cin,s[i]);
if(!check()){
cout<<"ERR"<<'\n';return;
}
if(calc()==ans)
cout<<"YES"<<'\n';
else
cout<<"NO"<<'\n';
return;
}
int main(){
cin>>T;
while(T--) solve();
return 0;
}