红紫,红紫,碎了一摊心血。
#include<bits/stdc++.h>
#define re register int
#define rll register long long
using namespace std;
int n;
map<string,int> mp;
string s1,s2;
bool pd(string s)
{
rll x=s.size();
re sum=0,pos=0,point=0,dvc=0,arr[6]={-1,0,0,0,0,(int)x};
for(re i=0;i<s.size();i++)
{
if(s[i]=='.')
{
point++;
arr[++pos]=i;
}
else if(s[i]==':')
{
dvc++;
arr[++pos]=i;
}
}
// cout<<"\narr:\n";for(re i=1;i<=5;i++)
// {
// if(arr[i]<arr[i-1])
// {
// return false;
// }
// cout<<arr[i]<<" ";
// }cout<<dvc<<endl;
if(point==3&&dvc==1)
{
cout<<"int";
for(re i=1;i<=4;i++)
{
x=0;
if(s[arr[i-1]+1]=='0'&&arr[i]-arr[i-1]!=2)
{
return false;
}
for(re j=arr[i-1]+1;j<arr[i];j++)
{
if(s[j]<'0'||s[j]>'9')
{
return false;
}
x=x*10+s[j]-'0';
}
if(x<0||x>255)
{
return false;
}
//cout<<x<<" ";
}
x=0;
if(s[arr[4]+1]=='0'&&arr[5]-arr[4]!=2)
{
return false;
}
for(re i=arr[4]+1;i<arr[5];i++)
{
if(s[i]<'0'||s[i]>'9')
{
return false;
}
x=x*10+s[i]-'0';
}
if(x<0||x>65535)
{
return false;
}
return true;
}
else
{
//cout<<111;
return false;
}//1 Client 910.135.39.1933141680
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n;
for(re i=1;i<=n;i++)
{
cin>>s1>>s2;
cout<<i<<":"<<s1<<" "<<s2<<endl;
if(s1=="Client")
{
if(!pd(s2))
{
cout<<"ERR\n";
}
else if(mp[s2]>=1&&mp[s2]<=n)
{
cout<<mp[s2]<<"\n";
}
else
{
cout<<"FAIL\n";
}
}
else if(s1=="Server")
{
if(pd(s2))
{
if(mp[s2]>=1&&mp[s2]<=n)
{
cout<<"FAIL\n";
}
else
{
mp[s2]=i;
cout<<"OK\n";
}
}
else
{
cout<<"ERR\n";
}
}
}
return 0;
}