Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33462 | _ | [CSP-J2021]网络连接 | C++ | 通过 | 100 | 7 MS | 304 KB | 1666 | 2021-12-06 13:52:29 |
#include <iostream> #include <string> #include <map> #include <vector> using namespace std; bool isvalid(const string& ad) { vector<string> nums(1); for (int i(0), dot_cnt(0), dd_cnt(0); ; ++i) { if (i == ad.size()) { if (dot_cnt != 3 || dd_cnt != 1) return false; break; } switch (ad[i]) { case '.': if (dd_cnt) return false; ++dot_cnt; nums.push_back(""); break; case ':': if (dot_cnt != 3) return false; ++dd_cnt; nums.push_back(""); break; default: if (!isdigit(ad[i])) return false; nums.back() += ad[i]; } if (dot_cnt > 3 || dd_cnt > 1) return false; } for (int i(0); i != nums.size(); ++i) { if (nums[i].empty() || (i < 4 && nums[i].size() > 3) || (i == 4 && nums[i].size() > 5)) return false; if (nums[i] == "0") continue; if (nums[i][0] == '0') return false; int n(0); for (string::const_iterator j(nums[i].begin()); j != nums[i].end(); ++j) n = (n << 3) + (n << 1) + (*j - '0'); if ((i < 4 && n > 255) || (i == 4 && n > 65535)) return false; } return true; } int main() { int N(0); cin >> N; string op, ad; map<string, int> dict; for (int i(0); i != N; ++i) { cin >> op >> ad; if (!isvalid(ad)) { cout << "ERR" << endl; continue; } if (op == "Server") { if (dict.find(ad) == dict.end()) cout << "OK" << endl, dict[ad] = i + 1; else cout << "FAIL" << endl; } if (op == "Client") { if (dict.find(ad) == dict.end()) cout << "FAIL" << endl; else cout << dict[ad] << endl; } } return 0; }