提交时间:2021-12-08 13:21:21
运行 ID: 33811
#include<bits/stdc++.h> using namespace std; int n; map<string,int>ms; bool Check(string s) { 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++) { scanf("%d%d",&mac,&ad); if(!Check(ad)) cout<<"ERR\n"; else if(mac[0]=='S') if(ms[ad]) printf("FAIL\n"); else ms[ad]=i,puts("OK"); else { if(ms[ad]) printf("%d\n",ms[ad]); else printf("FAIL\n"); } } return 0; }