90分,wa了2个点
#include<bits/stdc++.h>
using namespace std;
int n;
string name,s;
map<string,int>mp;
bool check(string s){
int bbb=0;
int len=s.size();
s=' '+s;
int m=0;
int cnt=0;
long long shu=0;
int cnt1=0,cnt2=0;
bool f=0;
if(s[len]=='.'||s[len]==':')return 0;
for(int i=1;i<=s.size();i++){
if((s[i]=='.'||s[i]==':')&&(s[i+1]=='.'||s[i+1]==':'))return 0;
if(s[i]=='0'&&i==1&&s[i+1]>='0'&&s[i+1]<='9')return 0;
if(s[i]=='0'&&(s[i-1]=='.'||s[i-1]==':')&&s[i+1]>='0'&&s[i+1]<='9')return 0;
if(s[i]>='0'&&s[i]<='9')shu=shu*10+(s[i]-'0');
if(s[i]=='-')return 0;
if(s[i]=='.')cnt1++,m++;
if(s[i]==':')cnt2++,m++;
if(cnt1>3)return 0;
if(cnt2>1)return 0;
if(m<=3&&s[i]==':')return 0;
if(m==4&&s[i]=='.')return 0;
if(s[i]=='.'||s[i]==':'){
bbb++;
if(cnt!=5){
if(shu>255)return 0;
}
if(cnt==5)if(shu>65535)return 0;
shu=0;
cnt++;
f=0;
}
}
if(s[len]>='0'&&s[len]<='9')bbb++;
if(shu>65535)return 0;
if(bbb!=5)return 0;
if(m!=4)return 0;
return 1;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>name>>s;
if(check(s)==0){
cout<<"ERR\n";
continue;
}
if(name=="Server"){
if(mp[s]!=0)cout<<"FAIL\n";
else {
cout<<"OK\n";
mp[s]=i;
}
}
else{
if(mp[s]!=0)cout<<mp[s]<<"\n";
else cout<<"FAIL\n";
}
}
return 0;
}
大佬求调