95分,err部分错误
附代码
#include<bits/stdc++.h>
using namespace std;
string x,y,s[1001];
int sv,n;
bool err(string y)
{
bool t=false;string zs="";long long l,c=0,cc=0;
for(int i=0;i<y.size();++i)
{
if(y[i]=='-')
return true;
if(y[i]>='0'&&y[i]<='9')
{
if(y[i]=='0'&&!t)
{
if(i==y.size()-1)
continue;
if(y[i+1]!='.'&&y[i+1]!=':')
return true;
}else
t=true;
zs+=y[i];
}
if(y[i]=='.'||y[i]==':')
{
if(y[i-1]=='.'||y[i-1]==':')
return true;
if(y[i]=='.')
++c;
if(c>3)
return true;
if(y[i]==':')
{
++cc;
if(c<3)
return true;
}
if(cc>1)
return true;
t=false;
stringstream ss;
ss<<zs;
ss>>l;
zs="";
if(l>255)
return true;
}
if(i==y.size()-1)
{
t=false;
stringstream ss;
ss<<zs;
ss>>l;
zs="";
if(l>65535)
return true;
}
}
if(cc!=1||c!=3)
return true;
if(y[y.size()-1]=='.'||y[y.size()-1]==':')
return true;
return false;
}
bool fd(string y)
{
for(int i=1;i<=sv;++i)
if(s[i]==y)
return true;
return false;
}
int fd1(string y)
{
for(int i=1;i<=sv;++i)
if(s[i]==y)
return i;
}
int main()
{
cin>>n;
for(int i=1;i<=n;++i)
{
cin>>x;
cin>>y;
if(err(y))
{
cout<<"ERR"<<'\n';
++sv;
continue;
}
if(x=="Server")
{
if(fd(y))
cout<<"FAIL"<<'\n',++sv;else
cout<<"OK"<<'\n',s[++sv]=y;
}else
{
if(!fd(y))
cout<<"FAIL"<<'\n';else
cout<<fd1(y)<<'\n';
++sv;
}
}
return 0;
}