WA了一堆QWQ。
#include<bits/stdc++.h>
using namespace std;
string op,fw;
int n;
unordered_map<string,int> v;
bool pd(string a){
int l=a.size(),cnt1=0,cnt2=0,dd[5],tj,f;
for(int i=0;i<l;i++){
if(a[i]>'9'&&a[i]<'0'&&a[i]!='.'&&a[i]!=':'){
return true;
}
if(a[i]=='.'){
if(i>0){
if(a[i]==a[i-1]){
return true;
}
}
cnt1++;
if(cnt1>3){
return true;
}
dd[cnt1]=i;
}
if(a[i]==':'){
if(i>0){
if(a[i-1]=='.'){
return true;
}
}
if(cnt1!=3){
return true;
}
cnt2++;
if(cnt2>1){
return true;
}
dd[4]=i;
}
}
if(cnt2!=1||cnt1!=3){
return true;
}
tj=0,f=0;
for(int i=0;i<dd[1];i++){
if(f==0&&a[i]=='0'&&dd[1]>1){
return true;
}
tj*=10;
tj+=a[i]-'0';
f=1;
}
if(tj>255){
return true;
}
tj=0,f=0;
for(int i=dd[1]+1;i<dd[2];i++){
if(f==0&&a[i]=='0'&&dd[2]-dd[1]-1>1){
return true;
}
tj*=10;
tj+=a[i]-'0';
f=1;
}
if(tj>255){
return true;
}
tj=0,f=0;
for(int i=dd[2]+1;i<dd[3];i++){
if(f==0&&a[i]=='0'&&dd[3]-dd[2]-1>1){
return true;
}
tj*=10;
tj+=a[i]-'0';
f=1;
}
if(tj>255){
return true;
}
tj=0,f=0;
for(int i=dd[3]+1;i<dd[4];i++){
if(f==0&&a[i]=='0'&&dd[4]-dd[3]-1>1){
return true;
}
tj*=10;
tj+=a[i]-'0';
f=1;
}
if(tj>255){
return true;
}
tj=0,f=0;
for(int i=dd[4]+1;i<l;i++){
if(f==0&&a[i]=='0'&&l-dd[4]>1){
return true;
}
tj*=10;
tj+=a[i]-'0';
f=1;
}
if(tj>65535){
return true;
}
return false;
}
int main(){
// freopen("network.in","r",stdin);
// freopen("network.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
cin>>op>>fw;
if(pd(fw)){
puts("ERR");
}else if(op[0]=='S'){
if(v[fw]!=0){
puts("FAIL");
}else{
puts("OK");
v[fw]=i;
}
}else{
if(v[fw]!=0){
printf("%d\n",v[fw]);
}else{
puts("FAIL");
}
}
}
return 0;
}