RT
我的源代码:
#include <bits/stdc++.h>
using namespace std;
map<string, int> ma;
bool check(string s) {
int len = s.size();
if (!isdigit(s[0]) && !isdigit(s[len - 1]))
return false;
vector<int> v1, v2;
for (int i = 0; i < len; i++) {
if (s[i] == '.')
v1.push_back(i);
else if (s[i] == ':')
v2.push_back(i);
}
if (v1.size() != 3 && v2.size() != 1)
return false;
if ((v1[0] + 1 == v1[1]) || (v1[1] + 1 == v1[2]))
return false;
if (!(v2[0] > v1[2] + 1))
return false;
for (int i = 0; i < len; i++) {
if (!isdigit(s[i]))
s[i] = ' ';
}
stringstream ss(s);
string numstr[5];
for (int i = 0; i < 5; i++)
ss >> numstr[i];
int num[5];
for (int i = 0; i < 5; i++)
num[i] = stoi(numstr[i]);
for (int i = 0; i < 5; i++) {
if (numstr[i][0] == '0' && numstr[i].size() > 1)
return false;
if (i == 4 && num[i] > 65535)
return false;
if (i < 4 && num[i] > 255)
return false;
}
return true;
}
void solve(int id) {
string op, ad;
cin >> op >> ad;
if (!check(ad))
cout << "ERR\n";
else if (op == "Server") {
if (ma.count(ad))
cout << "FAIL\n";
else {
cout << "OK\n";
ma[ad] = id;
}
}
else {
if (!ma.count(ad))
cout << "FAIL\n";
else
cout << ma[ad] << endl;
}
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++)
solve(i);
return 0;
}
蒟蒻感激不尽!