rt。
实在找不到大佬来帮助我了,只能在这里浑水摸鱼了。
P7911,75分求调。
#include<bits/stdc++.h>
using namespace std;
string a,b;
int n;
bool judge(string s)
{
int a=0,d=0,m=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='.')
{
d++;
if(d>3)return 0;
a=0;
for(int j=i-1,k=1;s[j]!='.'&&j>=0;j--,k*=10)a=(s[j]-'0')*k+a;
if(a<0||a>255)return 0;
a=0;
}
if(s[i]==':')
{
m++;
if(m>1)return 0;
if(d<3)return 0;
a=0;
for(int j=i-1,k=1;j>=0&&s[j]!='.';j--,k*=10)a=(s[j]-'0')*k+a;
if(a<0||a>255)
{
// cout<<a<<endl;
return 0;
}
a=0;
}
if(s[i]==0&&i==0&&(s[i+1]>='0'&&s[i+1]<='9'))return 0;
if(s[i]=='0'&&(s[i+1]!='.'&&s[i+1]!=':')&&i+1<s.size()&&!(s[i-1]>='0'&&s[i-1]<='9'))return 0;
}
a=0;
for(int j=s.size()-1,k=1;j>=0&&s[j]!=':';j--,k*=10)a=(s[j]-'0')*k+a;
// cout<<a<<endl;
if(a<0||a>65535)return 0;
return 1;
}
map<string,int>vis;
int main()
{
// freopen("P7911_2.in","r",stdin);
// cin>>a;
// cout<<judge(a);
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a>>b;
if(a=="Server")
{
if(vis[b])cout<<"FAIL\n";
else if(!judge(b))cout<<"ERR\n";
else
{
vis[b]=i;
cout<<"OK\n";
}
}
else
{
if(!judge(b))cout<<"ERR\n";
else if(!vis[b])cout<<"FAIL\n";
else if(vis[b])cout<<vis[b]<<endl;
}
}
}