提交时间:2021-12-12 22:58:13

运行 ID: 34909

#include <bits/stdc++.h> using namespace std; map<string,int> vis; int n; bool check(char s[]) { int a=-1,b=-1,c=-1,d=-1,e=-1; int t=sscanf(s,"%d.%d.%d.%d:%d",&a,&b,&c,&d,&e); if(t!=5) return 0; if(a<0||a>255) return 0; if(b<0||b>255) return 0; if(c<0||c>255) return 0; if(d<0||d>255) return 0; if(e<0||e>65535) return 0; char s2[35]; sprintf(s2,"%d.%d.%d.%d:%d",a,b,c,d,e); int lens=strlen(s); bool ok=0; for(int i=0; i<lens; i++) { if(s[i]==s2[i]) ok=1; else { ok=0; break; } } return ok; } int main() { cin>>n; for(int i=1; i<=n; i++) { char op[1005],ad[1005]; cin>>op>>ad; string t(ad); if(op[0]=='S') { if(!check(ad)) cout<<"ERR"<<endl; else if(vis.count(t)!=0) { cout<<"FAIL"<<endl; } else { cout<<"OK"<<endl; vis[t]=i; } } else { if(!check(ad)) { cout<<"ERR"<<endl; } else if(vis.count(t)==0) { cout<<"FAIL"<<endl; } else { cout<<vis[ad]<<endl; } } } }