#include<bits/stdc++.h>
using namespace std;
bool check(string y)
{
int t,r=0;
int vis=0;
y+="!";
for(int i=0;i<y.size()-1;i++)
{
if(y[i]>='0' && y[i]<='9')
{
if(y[i]-'0' == 0 && vis == 0)
{
if(y[i+1]>='0' && y[i+1]<='9')
return 0;
}
vis=1;
r=r*10+(y[i]-'0');
if(r > 65535) return 0;
}
else
{
t++;
if(vis==0)
return 0;
//cout<<r<<endl;
if(r>255) return 0;
if((t <= 3 && y[i] !='.') || (t == 4 && y[i] !=':'))
return 0;
if(t>4) return 0;
//cout<<t<<" "<<y[i]<<endl;
r=0,vis=0;
}
}
if(t != 4)return 0;
if(r>65535 ||vis == 0)return 0;
//cout<<r<<" ";
return 1;
}
map<string , int>vis;
string w,x;
int Q,t;
int main()
{
cin>>Q;
while(Q--)
{
t++;
cin>>w>>x;
if(w == "Server")//服务机
{
if(!check(x))//x是否合法
cout<<"ERR\n";
else//是否已经被建立
if(vis[x])
cout<<"FAIL\n";
else
{
vis[x] = t;
cout<<"OK\n";
}
}
else//客户机
{
if(!check(x))//x是否合法
cout<<"ERR\n";
else//是否可以被连接
if(vis[x])
cout<<vis[x]<<"\n";
else
{
cout<<"FAIL\n";
}
}
}
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
Server 100.248.83.30:3352
Server 98.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