#include<bits/stdc++.h>
using namespace std;
const int sum1=255,sum2=65535;
string op,s; int n; bool nowop;
map<string,int> ma;
bool err(string s){
int no=1,nowsum=0,big=0,zero=0;
string yk="";
for(int i=0;i<s.size();i++){
if(s[i]=='.' || s[i]==':') yk+=s[i];
else if(s[i]<'0' || s[i]>'9') return 1;
}
if(yk!="...:") return 1;
s+='.';
for(int i=0;i<s.size();i++){
if(s[i]=='.' || s[i]==':'){
if(no==1) return 1;
if(s[i]==':') big=1;
no=1; nowsum=0; zero=0;
}else{
if(s[i]=='0' && no==1) zero=1;
if(s[i]!='0' && zero==1) return 1;
nowsum=nowsum*10+s[i]-'0',no=0;
}
if((!big && nowsum>sum1) || nowsum>sum2) return 1;
}
return 0;
}
int main(){
freopen("network.in","r",stdin);
freopen("network.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){
cin>>op;
cin>>s;
if(op[0]=='S') nowop=1;
else nowop=0;
if(nowop){
if(ma[s]){printf("FAIL\n");continue;}
if(err(s)){printf("ERR\n");continue;}
printf("OK\n");ma[s]=i;
}else{
if(ma[s]){printf("%d\n",ma[s]);continue;}
if(err(s)){printf("ERR\n");continue;}
printf("FAIL\n");
}
}
return 0;
}
洛谷评测100,但是计蒜客评出来70pts,求大佬帮忙看一下