#include <iostream>
using namespace std;
long long n;
int cnt=0;
struct server{
string num;
long long bianh;
}ser[1001];
bool check(string s)
{
int len=s.length();
long long tmp=0;
int cnt1=0,cnt2=0,cnt3=0;
for (int i=0;i<len;i++)
{
if ((i==0||s[i-1]=='.'||s[i-1]==':')&&s[i]>='0'&&s[i]<='9')cnt3++;
if (s[i]=='.'||s[i]==':')
{
if (s[i]=='.')
{
cnt1++;
}
else if (s[i]==':')cnt2++;
if (cnt1<3&&cnt2)
{
return false;
}
if (!cnt3)
{
return false;
}
if (0<=tmp&&tmp<=255)
{
tmp=0;
continue;
}
else return false;
}
else if (s[i]<'0'||s[i]>'9')
{
return false;
}
if (i&&!tmp&&s[i-1]=='0')
{
return false;
}
tmp=tmp*10+s[i]-'0';
}
if (cnt1!=3||cnt2!=1||cnt3!=5)return false;
if (0<tmp&&tmp<=65535)return true;
else
{
return false;
}
}
int main ()
{
cin>>n;
int cnt,sersum=0;
string a,b;
for (int i=1;i<=n;i++)
{
cin>>a>>b;
if (a=="Server")
{
cnt++;
if (!check(b))
{
cout<<"ERR"<<endl;
continue;
}
int flag=1;
for (int i=1;i<=sersum;i++)
{
if (b==ser[i].num)
{
cout<<"FAIL"<<endl;
flag=0;
break;
}
}
if (flag==1)
{
cout<<"OK"<<endl;
sersum++;
ser[sersum].bianh=cnt;
ser[sersum].num=b;
}
}
else if (a=="Client")
{
cnt++;
if (!check(b))
{
cout<<"ERR"<<endl;
continue;
}
int flag=1;
for (int i=1;i<=sersum;i++)
{
if (b==ser[i].num)
{
cout<<ser[i].bianh<<endl;
flag=0;
break;
}
}
if (flag==1)
{
cout<<"FUIL"<<endl;
}
}
}
}
为什么输入没有自动换行