WA#17#18
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int now=0;
struct ip{
int a,b,c,d,e,i;
bool c_or_s;
ip(int aa,int bb,int cc,int dd,int ee,bool cs,int ii){
a=aa,b=bb,c=cc,d=dd,e=ee,c_or_s=cs,i=ii;
}
ip(){}
bool operator==(const ip a)const{
return a.a==this->a&&a.b==this->b&&a.c==this->c&&a.d==this->d&&a.e==this->e&&a.c_or_s;
}
void print(){
//cerr<<this->a<<'.'<<this->b<<'.'<<this->c<<'.'<<this->d<<':'<<this->e<<" c_or_s:"<<this->c_or_s<<" index:"<<this->i<<endl;
}
};
string shuru;
ip ips[1005];
int n,bianhao,cnt;
bool have_ip(ip a){
for(int i=1;i<=cnt;i++){
//cerr<<"have ip():";
ips[i].print();
if(a==ips[i]){
if(!ips[i].c_or_s)
continue;
//cerr<<"eqauls"<<endl;
bianhao=ips[i].i;
return true;
}
}
return false;
}
string read_ip(bool c_or_s){
cin>>shuru;
int len=shuru.length();
int now=1,a=0,b=0,c=0,d=0,e=0,mh=0,dot=0,zero=0;
bool no_a=true,no_b=true,no_c=true,no_d=true,no_e=true;
for(int i=0;i<len;i++){
if(shuru[i]>='0'&&shuru[i]<='9'){
switch (now)
{
case 1:
no_a=false;
a=a*10+shuru[i]-48;
if(a==0)
zero++;
if(zero>1){
zero=0;
return "ERR";
}
break;
case 2:
no_b=false;
b=b*10+shuru[i]-48;
if(b==0)
zero++;
if(zero>1){
zero=0;
return "ERR";
}
break;
case 3:
no_c=false;
c=c*10+shuru[i]-48;
if(c==0)
zero++;
if(zero>1){
zero=0;
return "ERR";
}
break;
case 4:
no_d=false;
d=d*10+shuru[i]-48;
if(d==0)
zero++;
if(zero>1){
zero=0;
return "ERR";
}
break;
case 5:
no_e=false;
e=e*10+shuru[i]-48;
if(e==0)
zero++;
if(zero>1){
zero=0;
return "ERR";
}
break;
default:
return "ERR";
}
}
if(shuru[i]=='.'||shuru[i]==':'){
if(shuru[i]=='.'){
dot++;
if(mh>0){
return "ERR";
}
}
if(shuru[i]==':'){
mh++;
if(dot!=3){
return "ERR";
}
}
now++;
}
}
string pd=to_string(a)+"."+to_string(b)+"."+to_string(c)+"."+to_string(d)+":"+to_string(e);
//cerr<<pd<<endl;
if(!(pd==shuru)){
return "ERR";
}
if(now!=5||a>255||b>255||c>255||d>255||e>65535||no_a||no_b||no_c||no_d||no_e||mh!=1||dot!=3){
return "ERR";
}
ip temp(a,b,c,d,e,c_or_s,cnt);
temp.print();
if(c_or_s){
if(have_ip(temp))
return "FAIL";
ips[cnt]=temp;
return "OK";
}
else if(!c_or_s){
if(have_ip(temp)){
ips[cnt]=temp;
return to_string(bianhao);
}
return "FAIL";
}
return "只是为了编译通过而写的一个没用字符串啊啊啊啊啊啊啊啊";
}
int main(){
cin>>n;
while(n--){
cin>>shuru;
cnt++;
if(shuru=="Server"){
cout<<read_ip(1)<<endl;
}
else{
cout<<read_ip(0)<<endl;
}
}
//system("pause");
return 0;
}