#include <bits/stdc++.h>
using namespace std;
const int N=1010;
map<string,int> mp;
int ans[N];
bool check(string s){ //a.b.c.d:e
int a=-1,b=-1,c=-1,d=-1,e=-1,flag,x=0;
flag=0;
for(int i=x;i<s.size();i++){//a
if(s[i]=='.'){
x=i+1;
break;
}
if(flag==0&&s[i]-'0'==0&&s[i+1]!='.') return 0;
else{
if(a==-1) a=0;
flag=1;
a=a*10+(s[i]-'0');
}
}
flag=0;
for(int i=x;i<s.size();i++){//b
if(s[i]=='.'){
x=i+1;
break;
}
if(flag==0&&s[i]-'0'==0&&s[i+1]!='.') return 0;
else{
if(b==-1) b=0;
flag=1;
b=b*10+(s[i]-'0');
}
}
flag=0;
for(int i=x;i<s.size();i++){//c
if(s[i]=='.'){
x=i+1;
break;
}
if(flag==0&&s[i]-'0'==0&&s[i+1]!='.') return 0;
else{
if(c==-1) c=0;
flag=1;
c=c*10+(s[i]-'0');
}
}
flag=0;
for(int i=x;i<s.size();i++){//d
if(s[i]==':'){
x=i+1;
break;
}
if(flag==0&&s[i]-'0'==0&&s[i+1]!=':') return 0;
else{
if(d==-1) d=0;
flag=1;
d=d*10+(s[i]-'0');
}
}
flag=0;
for(int i=x;i<s.size();i++){//e
if(flag==0&&s[i]-'0'==0&&i+1!=s.size()) return 0;
else{
if(e==-1) e=0;
flag=1;
e=e*10+(s[i]-'0');
}
}
if(a==-1||b==-1||c==-1||d==-1||e==-1) return 0;
if(a<0||a>255||b<0||b>255||c<0||c>255||d<0||d>255||e<0||e>65535) return 0;
return 1;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
string as,s;
cin>>as>>s;
if(!check(s)){
ans[i]=-1;
continue;
}
if(as=="Server"){ //服务机
if(mp[s]!=0) ans[i]=-2;
else mp[s]=i;
}
else{ //客户机
if(mp[s]!=0){
ans[mp[s]]=-3;
ans[i]=mp[s];
}
else ans[i]=-2;
}
}
for(int i=1;i<=n;i++){
if(ans[i]==-1) cout<<"ERR"<<endl;
else if(ans[i]==-2) cout<<"FAIL"<<endl;
else if(ans[i]==-3) cout<<"OK"<<endl;
else{
if(ans[i]==0) cout<<"OK"<<endl;
else cout<<ans[i]<<endl;
}
}
return 0;
}
蒟蒻已崩溃,望大佬DEBUG