#include<bits/stdc++.h>
using namespace std;
struct lb{
string s;
}fc[1005];//存服务及其编号(数组下标)
int n;
string s,foc;
string pd[1005];
int main(){
cin>>n;
for(int id=1;id<=n;id++){
cin>>foc>>s;
int cnt=0,f=1,k=0,qian0=0,first=1,a=0,b=0,c=0,d=0,e=0;
for(int i=0;s[i];i++){//第一次判断真假
if(s[i]=='.') cnt++;
if(s[i]==':') f=0;
}
for(;s[k];k++){//第二次判断真假
if(first==2&&s[k]=='0'&&s[k-1]=='0') qian0=1;
if(s[k]>='0'&&s[k]<='9') a=a*10+(s[k]-'0'),first++;
else break;
}
k++,first=1;
for(;s[k];k++){
if(first==2&&s[k]=='0'&&s[k-1]=='0') qian0=1;
if(s[k]>='0'&&s[k]<='9') b=b*10+(s[k]-'0'),first++;
else break;
}
k++,first=1;
for(;s[k];k++){
if(first==2&&s[k]=='0'&&s[k-1]=='0') qian0=1;
if(s[k]>='0'&&s[k]<='9') c=c*10+(s[k]-'0'),first++;
else break;
}
k++,first=1;
for(;s[k];k++){
if(first==2&&s[k]=='0'&&s[k-1]=='0') qian0=1;
if(s[k]>='0'&&s[k]<='9') d=d*10+(s[k]-'0'),first++;
else break;
}
k++,first=1;
for(;s[k];k++){
if(first==2&&s[k]=='0'&&s[k-1]=='0') qian0=1;
if(s[k]>='0'&&s[k]<='9') e=e*10+(s[k]-'0');
else break;
}
if(a>255||b>255||c>255||d>255||e>65535||qian0||f||cnt!=3){
cout<<"ERR"<<endl;
continue;
}
//以上述无语的判断地址真假
int connect=1;
if(foc=="Server"){
for(int i=1;i<id;i++){
if(fc[i].s==s){
connect=0;
break;
}
}
if(connect==0){
cout<<"FAIL"<<endl;
continue;
}
else{
cout<<"OK"<<endl;
fc[id].s=s;//加入列表
continue;
}
}
connect=0;
if(foc=="Client"){
for(int i=1;i<id;i++){
if(fc[i].s==s){
cout<<i<<endl;
connect=1;
break;
}
}
if(connect==0) cout<<"FAIE"<<endl;
}
}
return 0;
}
错的测试样例我测了,是对的,无语
#2的样例:
输入
10 Server 207.231.221.77:51007
Server 79.243.216.144:13350
Server 58.119.187.226:51586
Server 247.150.225.186:5558
Server100.248.83.30:3352
Server98.78.97.34:59089
Client 243.9.80.71:15160
Client 178.5.220.233:17605
Client 100.248.83.30:3352
Client 98.78.97.34:59089
输出
OK
OK
OK
OK
OK
OK
FAIL
FAIL
5
6
救救我吧!!
不信的神犇们可以试试哦!