#include<bits/stdc++.h>
using namespace std;
struct part_s_str{
char op;
int ed[5];
bool f;
}str[1007];
int n;
bool find(int i){
for(int j=0;j<i;++j){
if(str[j].f)continue;
bool flag=1;
for(int k=0;k<5;k++)
if(str[i].ed[k]!=str[j].ed[k]){
flag=0;
break;
}
if(flag){
if(str[i].op=='S'){
printf("FAIL\n");
return false;
}
else{
printf("%d\n",j+1);
return true;
}
}
}
if(str[i].op=='S'){
printf("OK\n");
return 1;
}
else if(str[i].op=='C'){
printf("FAIL\n");
return 0;
}
}
bool inputf(int i){
int s=0;string t;bool f=0,ff=1;
cin>>t;
for(int j=0,k=0;j<t.size();j++){
if(t[j]=='.'){
s++;
k++;
}
else if(t[j]==':'){
if(s<3)return 0;
f=1;
k++;
ff=0;
}
else if(t[j]>='0'&&t[j]<='9'){
if((j-1>=0&&(t[j-1]=='.'||t[j-1]==':'))&&t[j]=='0'&&(j+1<t.size()&&t[j+1]!='.'&&t[j+1]!=':'))
return 0;
str[i].ed[k]*=10;
str[i].ed[k]+=t[j]-'0';
}
else if(f&&t[j]=='.')return 0;
else if(!(t[j]>='0'&&t[j]<='9')&&t[j-1]==t[j])return 0;
}
if(ff){
printf("ERR\n");
return 0;
}
for(int j=0;j<4;j++){
if(str[i].ed[j]>255){
printf("ERR\n");
return 0;
}
}
if(str[i].ed[4]>65535){
printf("ERR\n");
return 0;
}
return find(i);
}
int main(){
//freopen("network.in","r",stdin);
//freopen("network.out","w",stdout);
cin>>n;
for(int i=0;i<n;++i){
string op;
cin>>op;
str[i].op=op[0];
if(!inputf(i)){
str[i].f=1;
}
}
return 0;
}
改了好久才从0分改到65分,实在找不到其他错误了
记录