#include<iostream>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<algorithm>//sort函数库
#include<cstdlib>
#include<cstring>
#include<bits/stdc++.h>
#include<map>
#define gets(S) fgets(S,sizeof(S),stdin)
#pragma optimize GCC(2)
using namespace std;
struct com
{
string shape,address;
bool ok;
int num;
}comp[10000];
bool cmp1(string s)
{
if(s.size() <3)
{
if(s[0]=='0'&&s.size() !=1)return false;
else if(s[0]=='-')return false;
}
else
{
long long num=(s[0]-'0')*100+(s[1]-'0')*10+(s[2]-'0');
if(num>255)return false;
}
return true;
}
bool cmp2(string s)
{
if(s.size() <5)
{
if(s[0]=='0'&&s.size() !=1)return false;
else if(s[0]=='-')return false;
}
else
{
long long num=(s[0]-'0')*10000+(s[1]-'0')*1000+(s[2]-'0')*100+(s[3]-'0')*10+(s[4]-'0');
if(num>65535)return false;
}
return true;
}
bool cmp(string s)
{
int mao=0,point=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='.')point++;
if(s[i]==':')
{
mao++;
if(point!=3)return false;
}
}
if(point!=3||mao!=1)return false;
string part1="",part2="",part3="",part4="",part5="";
int key;
for(int i=0;i<s.size();i++)
{
if(s[i]=='.')
{
key=i+1;break;
}
else
{
part1+=s[i];
}
}
for(int i=key;i<s.size();i++)
{
if(s[i]=='.')
{
key=i+1;break;
}
else
{
part2+=s[i];
}
}
for(int i=key;i<s.size();i++)
{
if(s[i]=='.')
{
key=i+1;break;
}
else
{
part3+=s[i];
}
}
for(int i=key;i<s.size();i++)
{
if(s[i]==':')
{
key=i+1;break;
}
else
{
part4+=s[i];
}
}
for(int i=key;i<s.size();i++)
{
part5+=s[i];
}
if(part1.size()>3||part2.size()>3||part3.size()>3||part4.size()>3||part5.size()>5)
{
return false;
}
if(cmp1(part1)==false)return false;
if(cmp1(part2)==false)return false;
if(cmp1(part3)==false)return false;
if(cmp1(part4)==false)return false;
if(cmp2(part5)==false)return false;
return true;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>comp[i].shape>>comp[i].address;
}
for(int i=1;i<=n;i++)
{
if(cmp(comp[i].address)==true)
{
for(int j=1;j<i;j++)
{
if(comp[i].address==comp[j].address&&comp[j].shape==comp[i].shape&&comp[i].shape =="Server")
{
cout<<"FAIL"<<endl;goto FLAG;
}
}
if(comp[i].shape =="Server")
{
cout<<"OK"<<endl;
}
else
{
for(int j=1;j<i;j++)
{
if(comp[i].address==comp[j].address&&comp[j].shape!=comp[i].shape )
{
cout<<j<<endl;goto FLAG;
}
}
cout<<"FAIL"<<endl;
}
}
else
{
cout<<"ERR"<<endl;
}
FLAG:;
}
return 0;
}
找不到错误的我又来求助了