只过前两个点,后面全部WA,求大佬帮忙调一下代码,谢谢!
#include <bits/stdc++.h>
using namespace std;
int T;
int L;
string O;
char c[105],x[105];
bool y[105],z[105];
int f[105];
bool use[27];
bool add;
int zero;
int cnt,o,ans=0,now=0;
vector <int> v;
int get_O(){
if(O[2]=='1') return 0;
else if(O.length()==6) return O[4]-'0';
else return 10*(O[4]-'0')+O[5]-'0';
}
void Init(){
cin>>L>>O;
for(int i=1;i<=L;i++){
//cout<<i<<" ";
cin>>c[i];
//cout<<c[i]<<endl;
if(c[i]=='F'){
string p,q;
cin>>x[i]>>p>>q;
if(p=="n") y[i]=1;
else y[i]=0;
if(q=="n") z[i]=1;
else z[i]=0;
}
}
}
void Work(){
v.clear();
cnt=0;
add=1;
ans=now=0;
for(int i=0;i<=26;i++) use[i]=0;
o=get_O();
//cout<<o<<endl;
for(int i=1;i<=L;i++){
if(c[i]=='F'){
cnt++;
v.push_back(i);
if(use[x[i]-'a']==1){
cout<<"EER\n";
return;
}
use[x[i]-'a']=1;
if(add==0) continue;
if(y[i]==0&&z[i]==1){
now++;
f[i]=1;
}
else if(y[i]==1&&z[i]==0){
add=0;
zero=i;
f[i]=0;
}
else f[i]=0;
}
else if(c[i]=='E'){
cnt--;
if(cnt<0){
cout<<"ERR\n";
return;
}
int s=v.front();
v.pop_back();
if(add) now-=f[i];
if(s==zero) add=1;
ans=max(ans,now);
use[x[i]-'a']=0;
}
//cout<<ans<<' '<<now<<endl;
}
if(cnt!=0) cout<<"ERR\n";
else if(now==o) cout<<"Yes\n";
else cout<<"No\n";
}
int main(){
cin>>T;
while(T--){
Init();
Work();
}
return 0;
}