讨论区的hack都过了 求调qwq
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,tot,num[6];
struct fwj
{
ll a,b,c,d,e;
}f[100005];
int main()
{
cin>>n;
while(n--)
{
tot++;
f[tot].a=f[tot].b=f[tot].c=f[tot].d=f[tot].e=-1;
num[1]=num[2]=num[3]=num[4]=num[5]=-1;
ll now=1;
string s;
cin>>s;
string e;
cin>>e;
e="%"+e+"%";
ll sum=0,flag=0;
if(e[1]=='.'||e[1]==':'||(e[1]=='0'&&(e[2]>='0'&&e[2]<='9'))) flag=1,cout<<"ERR\n";
for(ll i=1;i<e.size();i++)
{
if((i!=e.size()-1&&(e[i]<'0'||e[i]>'9')&&(e[i+1]<'0'||e[i+1]>'9'))||(e[i]=='0'&&(e[i+1]>='0'&&e[i+1]<='9')&&(e[i-1]=='.'||e[i-1]==':')))
{
cout<<"ERR\n";
flag=1;
break;
}
else if(e[i]=='%')
{
num[5]=sum;
now++;
continue;
}
else if(e[i]==':')
{
if(now!=4)
{
cout<<"ERR\n";
flag=1;
break;
}
else
num[4]=sum,sum=0;
now++;
continue;
}
else if(e[i]=='.')
{
if(now==4)
{
cout<<"ERR\n";
flag=1;
break;
}
else num[now++]=sum,sum=0;
continue;
}
else if((e[i]<'0'||e[i]>'9')&&e[i]!='.'&&e[i]!=':'&&e[i]!='%')
{
cout<<"ERR\n";
flag=1;
break;
}
sum*=10;
sum=sum+e[i]-'0';
if(sum>65535)
{
flag=1;
cout<<"ERR\n";
break;
}
}
if(now!=6&&!flag)
{
cout<<"ERR\n";
flag=1;
}
//cout<<"\n";
//for(ll i=1;i<=5;i++) cout<<num[i]<<" ";cout<<"\n";
if(flag==1) continue;
if(num[1]>255||num[2]>255||num[3]>255||num[4]>255||num[5]>65535)
{
cout<<"ERR\n";
continue;
}
if(s[0]=='S'&&s[1]=='e'&&s[2]=='r'&&s[3]=='v'&&s[4]=='e'&&s[5]=='r'&&s.size()==6)
{
bool flag=0;
for(ll i=1;i<=tot;i++)
{
if(num[1]==f[i].a&&num[2]==f[i].b&&num[3]==f[i].c&&num[4]==f[i].d&&num[5]==f[i].e)
{
flag=1;
cout<<"FAIL\n";
}
}
if(!flag)
{
cout<<"OK\n";
f[tot].a=num[1];
f[tot].b=num[2];
f[tot].c=num[3];
f[tot].d=num[4];
f[tot].e=num[5];
}
}
else if(s[0]=='C'&&s[1]=='l'&&s[2]=='i'&&s[3]=='e'&&s[4]=='n'&&s[5]=='t'&&s.size()==6)
{
bool flag=0;
for(ll i=1;i<=tot;i++)
{
if(num[1]==f[i].a&&num[2]==f[i].b&&num[3]==f[i].c&&num[4]==f[i].d&&num[5]==f[i].e)
{
flag=1;
cout<<i<<"\n";
}
}
if(!flag)
{
cout<<"FAIL\n";
}
}
else cout<<"ERR\n";
//cout<<tot<<" ";
}
}