帮帮蒟蒻吧
#include<bits/stdc++.h>
using namespace std;
string o,p;
string ans[1010];
map<string,int> cli;
map<string,bool> ser;
int wei(int x){
if(x == 0){
return 1;
}
int ans = 0;
while(x){
ans ++;
x/=10;
}
return ans;
}
bool True(string x){
int a = 0,e = 0,i = 0,j = 0,k = 0,f;
for(;i < x.size();i ++){
if(x[i] == '.' || x[i] == ':'){
if(i - j != wei(a)){
return false;
}
if(x[i] == ':'){
f = 1;
}
if(x[i] == '.'){
k ++;
}
if(x[i] == ':' && k != 3){
return false;
}
if((x[i] == ':' || x[i] == '.') && a <= 255 && a >= 0){
j = i + 1;
a = 0;
continue;
}
}
if(x[i] < '0' || x[i] > '9'){
return false;
}
a = a * 10 + x[i] - 48;
}
if(a == 0 && i - j != 1 || !f){
return false;
}
if(a >= 0 && a <= 65535){
return true;
}
}
string str(int x){
string a = "";
int y;
while(x){
y = x % 10;
a = (char)(y + 48) + a;
x /= 10;
}
return a;
}
int main(){
int _;
cin >> _;
for(int op = 1;op <= _;op ++){
cin >> o >> p;
if(o == "Server"){
if(ser[p]){
ans[op] = "FAIL\n";
continue;
}
if(True(p)){
cli[p] = op;
ser[p] = true;
ans[op] = "OK\n";
continue;
}else{
cli[p] = op;
ans[op] = "ERR\n";
continue;
}
}else {
if(!True(p)){
ans[op] = "ERR\n";
continue;
}
if(!ser[p]){
ans[op] = "FAIL\n";
continue;
}else{
ans[op] = str(cli[p]) + "\n";
continue;
}
}
}
for(int op = 1;op <= _;op ++){
cout << ans[op];
}
return 0;
}