自认为结构较清晰
#include<iostream>
using namespace std;
int n,cnt;
struct node{
int id;
string op,ad;
}q[1005];
int f(string s){
int a=0,ansd=0,ansm=0;
for(int i=0;i<s.size();i++){
if(s[i]==':'){
ansm++;
if(a>255)return 1;
a=0;
}
if(s[i]=='.'){
ansd++;
if(a>255)return 1;
a=0;
}
if(s[i]>='0'&&s[i]<='9')a=a*10+(s[i]-'0');
if(ansm==1&&ansd==3&&a>65535)return 1;
}
if(ansm!=1||ansd!=3)return 1;
return 0;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
cin>>n;
for(int i=1;i<=n;i++){
cin>>q[i].op>>q[i].ad;
if(q[i].op=="Server")q[i].id=i;
if(f(q[i].ad)==1){
cout<<"ERR\n";
continue;
}else{
if(q[i].op=="Client"){
int u=0;
for(int j=1;j<i;j++){
if(q[j].op=="Server"&&q[j].ad==q[i].ad){
cout<<q[j].id<<"\n";
u=1;
break;
}
}
if(u!=1){
cout<<"FAIL\n";
continue;
}
}else{
int o=0;
for(int j=1;j<i;j++){
if(q[j].op==q[i].op&&q[j].ad==q[i].ad){
cout<<"FAIL\n";
q[i].ad="0";q[i].op="0";
o=1;
break;
}
}
if(o==1)continue;
cout<<"OK\n";
}
}
}
return 0;
}