提交时间:2021-12-13 13:52:33

运行 ID: 35176

#include<bits/stdc++.h> using namespace std; int n; map<string,int>maps; bool Check(string s) { ios::sync_with_stdio(false); cin.tie(0); int A[5]= {0},B[5]= {0}; int dot=0,colon=0,num=0; for(int i=0,j; i<s.size(); i++) { if(s[i]=='.') { if(dot>=3 || colon==1 || i==0 || num>3 || B[num]!=1 ) return 0; dot++; num++; } else if(s[i]==':') { if(dot!=3 || colon==1 || B[num]!=1 || num!=3) return 0; colon++; num++; } else { if(s[i]=='0' && i!=s.size()-1 && isdigit(s[i+1])) return 0; for(j=i; isdigit(s[j]) && j<s.size(); j++) { A[num]=(A[num]<<3)+(A[num]<<1)+s[j]-48; if(A[num]<0 || A[num]>65535 || (num<4 && A[num]>255)) return 0; if(isdigit(s[j+1])) i++; else break; } B[num]=1; } } return (dot!=3 || colon!=1 || B[4]==0) ? 0 : 1; } int main() { cin>>n; string mac,ad; for(int i=1; i<=n; i++) { cin>>mac>>ad; if(!Check(ad)) cout<<"ERR\n"; else if(mac[0]=='S') { if(maps[ad]) printf("FAIL\n"); else { maps[ad]=i; printf("OK\n"); } } else { if(maps[ad]) printf("%d\n",maps[ad]); else printf("FAIL\n"); } } return 0; }