提交时间:2021-12-07 19:09:53

运行 ID: 33722

#include <iostream> #include <map> using namespace std; map<string,int>cl; //映射服务机的ip到服务机的编号 bool OK(string s) //判断地址串合不合法 { int x = 0,i; long long sum; for(i = 1;i <= 4;i++) //a,b,c,d四段 { sum = 0; bool yes = 0; if(i < 4&&s[x] == '0'&&s[x + 1] != '.') return false; if(i == 4&&s[x] == '0'&&s[x + 1] != ':') return false; while(s[x] >= '0'&&s[x] <= '9') { yes = true; sum = sum * 10 + (s[x] - '0'); if(sum < 0||sum > 255) return false; x++; } if(!yes) return false; if((i < 4&&s[x] != '.')||s[x + 1] < '0'||s[x + 1] > '9') return false; if((i == 4&&s[x] != ':')||s[x + 1] < '0'||s[x + 1] > '9') return false; x++; } sum = 0; if(x == s.size()) return false; if(s[x] == '0'&&s.size() > x + 1) return false; while(x < s.size()) { if(s[x] < '0'||s[x] > '9') return false; sum = sum * 10 + (s[x] - '0'); x++; } if(sum < 0||sum > 65535) return false; return true; } int main() { int n,i; cin>>n; for(i = 1;i <= n;i++) { string op,add; cin>>op>>add; if(!OK(add)) { cout<<"ERR"<<endl; continue; } if(op == "Server") { if(cl[add] > 0) //如果有同ip服务机 { cout<<"FAIL"<<endl; //无法成功连接 continue; } cl[add] = i; //记录编号 cout<<"OK"<<endl; } else { if(!cl[add]) cout<<"FAIL"<<endl; //没有提供的ip对应的服务机 else cout<<cl[add]<<endl; //输出编号 } } return 0; }