14,21WA了,求调!
#include<bits/stdc++.h>
using namespace std;
struct Server{
int a,b,c,d,e,id;
}ji[1011];
int n,cnt;
long long temp[1011];
string Type,num;
bool check_num(int s,int e,int t){
long long number=0;
if(num[s]=='0'&&e>s)return 0;
for(int i=s;i<=e;i++){
number=number*10+num[i]-'0';
}
if(t<=4){
if(number>=0&&number<=255)return 1;
}else{
if(number>=0&&number<=65535)return 1;
}
return 0;
}
long long get_num(int s,int e){
long long number=0;
for(int i=s;i<=e;i++){
number=number*10+num[i]-'0';
}
return number;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>Type>>num;
int s=0,flag=0,cnt1=0,cnt2=0,sum=0,t=1;
memset(temp,0,sizeof(temp));
for(int j=0;j<num.length();j++){
if(num[j]!='.'&&num[j]!=':'&&num[j]<'0'&&num[j]>'9'){
flag=1;
break;
}else if(num[j]=='.'){
if(j-1>=0){
if(num[j-1]<'0'||num[j-1]>'9'){
flag=1;break;
}
}
if(j+1<num.length()){
if(num[j+1]<'0'||num[j+1]>'9'){
flag=1;break;
}
}
if(cnt2!=0||cnt1>3){
flag=1;
break;
}
if(!check_num(s,j-1,t)){
flag=1;
break;
}
temp[++sum]=get_num(s,j-1);
t++;
s=j+1;
cnt1++;
}else if(num[j]==':'){
if(j-1>=0){
if(num[j-1]<'0'||num[j-1]>'9'){
flag=1;break;
}
}
if(j+1<num.length()){
if(num[j+1]<'0'||num[j+1]>'9'){
flag=1;break;
}
}
if(cnt1!=3||cnt2!=0){
flag=1;
break;
}
if(!check_num(s,j-1,t)){
flag=1;
break;
}
temp[++sum]=get_num(s,j-1);
t++;
s=j+1;
cnt2++;
}
}
if(s==num.length())flag=1;
if(!check_num(s,num.length()-1,t))flag=1;
if(flag==1||cnt1!=3||cnt2!=1)cout<<"ERR"<<endl;
else{
temp[++sum]=get_num(s,num.length()-1);
flag=0;
if(Type[0]=='S'){
for(int i=1;i<=cnt;i++){
if(ji[i].a==temp[1]&&ji[i].b==temp[2]&&ji[i].c==temp[3]&&ji[i].d==temp[4]&&ji[i].e==temp[5]){
flag=1;
break;
}
}
if(flag==1)cout<<"FAIL"<<endl;
else{
cout<<"OK"<<endl;
ji[++cnt].a=temp[1];
ji[cnt].b=temp[2];
ji[cnt].c=temp[3];
ji[cnt].d=temp[4];
ji[cnt].e=temp[5];
ji[cnt].id=i;
}
}else{
int point;
for(int i=1;i<=cnt;i++){
if(ji[i].a==temp[1]&&ji[i].b==temp[2]&&ji[i].c==temp[3]&&ji[i].d==temp[4]&&ji[i].e==temp[5]){
flag=1;
point=ji[i].id;
break;
}
}
if(flag==1)cout<<point<<endl;
else cout<<"FAIL"<<endl;
}
}
}
return 0;
}