只对了1、2测试点
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<map>
using namespace std;
int n;
map<string,int> mp;
bool check(string s)
{
int t1=0,t2=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='.')
{
t1++;
if(t1>3)
{
// cout<<1<<endl;
return false;
}
if(t2>0)
{
//cout<<2<<endl;
return false;
}
}
else if(s[i]==':')
{
t2++;
if(t1!=3)
{
//cout<<3<<endl;
return false;
}
if(t2>1)
{
//cout<<4<<endl;
return false;
}
}
else if('0'<=s[i]&&s[i]<='9')
{
if(s[i]=='0'&&(!('0'<=s[i+1]&&s[i+1]<='9')))
{
//cout<<5<<endl;
return false;
}
int t=s[i]-'0';
while('0'<=s[i+1]&&s[i+1]<='9')
{
i++;
t=t*10+s[i]-'0';
}
if(t2==1&&t1==3)
{
if(t>65535)
{
//cout<<6<<endl;
return false;
}
}
else if(t2==0&&t1<=3)
{
if(t>255)
{
// cout<<i<<" ";
// cout<<t2<<" "<<t1<<" ";
// cout<<t<<" "<<7<<endl;
return false;
}
}
else
{
//cout<<8<<endl;
return false;
}
}
else
{
//cout<<9<<endl;
return false;
}
}
return true;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
string a,b;
cin>>a>>b;
if(a=="Server")
{
if(check(b))
{
if(mp[b]==0)
{
mp[b]=i;
cout<<"OK"<<endl;
}
else
{
cout<<"FAIL"<<endl;
}
}
else
{
cout<<"ERR"<<endl;
}
}
if(a=="Client")
{
if(check(b))
{
if(mp[b]==0)
{
cout<<"FAIL"<<endl;
}
else
{
cout<<mp[b]<<endl;
}
}
else
{
cout<<"ERR"<<endl;
}
}
}
return 0;
}