13,14,17,19,20,21 WA
都65吗,我70...
#include<bits/stdc++.h>
using namespace std;
map<string,int>mp;
int main(){
// freopen("network.in","r",stdin);
// freopen("network.out","w",stdout);
ios::sync_with_stdio(0);
int n,cnt=0;
string op,ad;
cin>>n;
while(n--){
cin>>op>>ad;
cnt++;
if(op=="Server"){
int len=ad.size(),s=0,sum=0;
bool flag=0,check=0;
for(int i=0;i<len;i++){
if(ad[i]=='.'){
if(i==0){
flag=1;
break;
}
if(ad[i-1]=='.'||ad[i-1]==':'){
flag=1;
break;
}
sum++;
if(sum>3){
flag=1;
break;
}
s=0;
}
else if(ad[i]==':'){
if(i==0){
flag=1;
break;
}
if(check||ad[i-1]=='.'){
flag=1;
break;
}
check=1;
s=0;
}
else{
if(s==0&&i!=0){
if(ad[i-1]=='0'){
flag=1;
break;
}
}
s=s*10+ad[i]-'0';
if(s>255&&!check){
flag=1;
break;
}
}
}
if(flag||s>65535||sum!=3||!check)cout<<"ERR"<<endl;
else if(mp.count(ad))cout<<"FAIL"<<endl;
else{
cout<<"OK"<<endl;
mp[ad]=cnt;
}
}
else{
int len=ad.size(),s=0,sum=0;
bool flag=0,check=0;
for(int i=0;i<len;i++){
if(ad[i]=='.'){
if(i==0){
flag=1;
break;
}
if(ad[i-1]=='.'||ad[i-1]==':'){
flag=1;
break;
}
sum++;
if(sum>3){
flag=1;
break;
}
s=0;
}
else if(ad[i]==':'){
if(i==0){
flag=1;
break;
}
if(check||ad[i-1]=='.'){
flag=1;
break;
}
check=1;
s=0;
}
else{
if(s==0&&i!=0){
if(ad[i-1]=='0'){
flag=1;
break;
}
}
s=s*10+ad[i]-'0';
if(s>255&&!check){
flag=1;
break;
}
}
}
if(flag||s>65535||sum!=3||!check)cout<<"ERR"<<endl;
else if(!mp.count(ad))cout<<"FAIL"<<endl;
else cout<<mp[ad]<<endl;
}
}
return 0;
}
大模拟,思路...
木有