只过了没分的#1和5分的#2,不知道哪错了,大佬求调。
#include <bits/stdc++.h>
using namespace std;
map <string,int>IP;
bool bo(string a,string b){//判断IP地址的每一位是否没超标。
if (a.size()!=b.size())return a.size()<b.size();
else return a<=b;
}
int main(){
ios::sync_with_stdio(false);//只是输入输出优化
int n,size,bh=0,bb;//bb判断是否有4个符号,即 . . . :。
bool f;
string id,s,x;
cin>>n;
while (n--){
cin>>id>>s;//输入
size=s.size();
bh++,bb=0,x="",f=1;
for (int i=0;i<size;i++){//处理IP地址
if (s[i]>='0'&&s[i]<='9')x+=s[i];
else {
bb++;
if (bb==4&&s[i]!=':'){//判断符号
cout<<"ERR\n";
f=0;
break;
}else if (((bb==3||bb==2||bb==1)&&s[i]!='.')){
cout<<"ERR\n";
f=0;
break;
}if (x[0]!='0'&&x!="0"&&(bo(x,"255")))x="";
else{
cout<<"ERR\n";
f=0;
break;
}
}
}if (f){
if (bb!=4){
cout<<"ERR\n";
continue;
}if (x[0]!='0'&&x!="0"&&(bo(x,"65535"))){
if (id=="Server"){
if (IP[s])cout<<"FAIL\n";
else{
IP[s]=bh;
cout<<"OK\n";
}
}else if (!IP[s])cout<<"FAIL\n";
else cout<<IP[s]<<'\n';
}else cout<<"ERR\n";
}
}return 0;
}
帮忙看看错在哪,自己调了半天没调出来。