Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
139886 陈家宝 [CSP-J2021]网络连接 C++ 通过 100 5 MS 320 KB 1493 2024-03-26 16:39:29

Tests(20/20):


#include<bits/stdc++.h> 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; }


测评信息: