题目原文请移步下面的链接
模拟
、枚举
普及/提高-
cin >> tp >> addr;
//scanf("%s%s", &tp, &addr);
#include <bits/stdc++.h>
using namespace std;
bool check(string s) {
long long a, b, c, d, e;
if (sscanf(s.c_str(), "%lld.%lld.%lld.%lld:%lld", &a, &b, &c, &d, &e) != 5) {
return false;
}
if (a < 0 || a > 255 || b < 0 || b > 255 || c < 0 || c > 255 || d < 0 || d > 255 || e < 0 || e > 65535) {
return false;
}
stringstream t;
t << a << '.' << b << '.' << c << '.' << d << ':' << e;
return t.str() == s;
}
void coder() {
}
void best() {
unordered_map<string, int> m;
string tp, addr;
int n;
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> tp >> addr;
//scanf("%s%s", &tp, &addr);
if (!check(addr)) {
cout << "ERR" << endl;
continue;
}
if (tp == "Server") {
if (m[addr]) {
cout << "FAIL" << endl;
} else {
m[addr] = i;
cout << "OK" << endl;
}
} else {
if (!m.count(addr)) {
cout << "FAIL" << endl;
} else {
cout << m[addr] << endl;
}
}
}
}
int main() {
// freopen("network.in", "r", stdin);
// freopen("network.out", "w", stdout);
best();
// fclose(stdin);
// fclose(stdout);
return 0;
}
END