情况
#include<bits/stdc++.h>
using namespace std;
map <string, int> M;
bool is_num(char c){
return c >= '0' && c <= '9';
}
bool ok(string str, string data){
if(str.length() < data.length()) return 1;
if(str.length() > data.length()) return 0;
return str[0] != '-' && str <= data;
}
bool check(string str){
string nums[10];
char ch[10]; int len = 1, sl = str.length();
for(int i = 0; i < sl; i++)
if(!is_num(str[i])){
ch[len++] = str[i];
if(len > 5)
return 0;
}
else if(str[i] != ' ')
nums[len] += str[i];
if(len < 5)
return 0;
for(int i = 1; i <= 4; i++)
if((nums[i][0] == '0' && nums[i].length() != 1 )|| !ok(nums[i], "255") || ch[i] != (i != 4 ? '.' : ':'))
return 0;
return ok(nums[5], "65535") && (nums[5][0] != '0' || nums[5].length() == 1);
}
int main(){
freopen("outit.txt","w",stdout);
int n;
cin >> n;
for(int i = 1; i <= n; i++){
string a, str;
cin >> a >> str;
if(a == "Server"){
if(check (str)){
if(M[str])
cout << "FAIL\n";
else{
cout << "OK\n";
M[str] = i;
}
}
else cout << "ERR\n";
}
else {
if(check (str)){
if(M[str])
cout << M[str] << endl;
else cout << "FAIL\n";
}
else cout << "ERR\n";
}
}
return 0;
}