蒟蒻求助!
代码:
#include<bits/stdc++.h>
#include<stdio.h>
using namespace std;
string op,ad;
char z[10]={'.','.','.',':'};
set<string>a;
map<string,int>p;
int isok(string s){
int fa=2,l=0;
int ans=0;
if(s[0]=='.'||s[0]==':') return 0;
for(int i=0;i<=s.size()-1;i++){
if(fa==1){
if(s[i]!=z[l]) return 0;
fa=2,l++;
if(s[i+1]=='.'||s[i+1]==':'||s[i+1]=='-') return 0;
continue;
}
ans=ans*10+s[i]-'0';
if(l==4){
if(l==4&&ans>=65536) return 0;
}
if(s[i+1]=='.'||s[i+1]==':'){
fa=1;
if(l<=3&&ans>=256) return 0;
ans=0;
continue;
}
if(s[i]=='0'&&s[i+1]!='.'&&s[i+1]!=':'&&i!=s.size()-1&&fa==2) return 0;
if(fa==2) fa=0;
}
if(l==4&&ans>=65536||l!=4||(ans==0&&s[s.size()-1]!='0')) return 0;
return 1;
}
int main(){
int n;
// freopen("luogu.in","r",stdin);
// freopen("my.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
cin>>op>>ad;
if(isok(ad)!=1){
cout<<"ERR\n";
continue;
}
if(op=="Server"){
int l=a.size();
a.insert(ad);
if(a.size()==l){
cout<<"FAIL\n";
}
else{
cout<<"OK\n";
p[ad]=i;
}
}
else{
if(a.count(ad)==1){
cout<<p[ad]<<endl;
}
else{
cout<<"FAIL\n";
}
}
}
}