#include <bits/stdc++.h>
using namespace std;
char dz[27];
string slst[5005],na;
int n,lls=0,all=0,num[5005];
bool pd(char uu[]){
int s1=0,s2=0,lon=strlen(uu),b,c,d,e,f;
for(int j=0;j<lon;j++){
if(uu[j]=='.') s1++;
if(uu[j]==':') s2++;
if(uu[j]=='0' && (uu[j+1]-0<=57 && uu[j+1]-0>=48)){
if(j==0) return false;
if(uu[j-1]=='.'||uu[j-1]==':') return false;
}
}
if(s1!=3 || s2!=1) return false;
sscanf(uu,"%d.%d.%d.%d:%d",&b,&c,&d,&e,&f);
if(d<0 || d>255) return false;
if(b<0 || b>255) return false;
if(c<0 || c>255) return false;
if(e<0 || e>255) return false;
if(f<0 || f>65535) return false;
return true;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>na>>dz;
if(pd(dz)){
if(na=="Server"){
for(int j=0;j<lls;j++){
if(slst[j]==dz){
cout<<"FAIL"<<endl,all=1;
break;
}
}
if(all==0)cout<<"OK"<<endl;
all=0;
slst[lls]=dz,num[lls]=i+1,lls++;
}
if(na=="Client"){
for(int j=0;j<lls;j++){
if(slst[j]==dz){
cout<<num[j]<<endl,all=1;
break;
}
}
if(all==0)cout<<"FAIL"<<endl;
all=0;
}
}
else cout<<"ERR"<<endl;
}
return 0;
}
下载了测试数据,在本地运行没看出什么问题(当然1000行的输出也没有逐行比对),感觉很迷惑