为啥做后几个是RE啊 65pts求dalao帮忙看看咋回事:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<string>
using namespace std;
typedef long long ll;
int n;
struct node{
string name;
string data;
}a[1100];
bool checkS(string data){
long long a=data.size();
if(a>21) return 0;
string s="";
int check=0;
int check1=0;
for(int i=0;i<a;i++){
if(data[i]=='.'||data[i]==':'){
check++;
if(data[i]==':') check1++;
if(i==0) return 0;
}
}
if(check1==0||check1>1) return 0;
if(check!=4) return 0;
for(int i=0;i<a;i++){
if(data[i]!='.'&&data[i]!=':'){
s=s+data[i];
}else{
if(data[i]=='.'||data[i]==':'){
if(s[0]=='0'&&s.size()>=2) return 0;
if(stoi(s)<=255){
s="";
continue;
}else{
return 0;
}
}
}
}
// cout<<s;
if(s[0]=='0'&&s.size()>=2) return 0;
if(stoi(s)<=65536){
return 1;
}
return 0;
}
int main(){
ios::sync_with_stdio(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].data;
bool f=checkS(a[i].data);
if(a[i].name=="Server"){
if(f){
bool t=0;
for(int j=1;j<i;j++){
if(a[j].name=="Server"&&(a[j].data==a[i].data)){
t=1;
break;
}
}
if(t){
cout<<"FAIL"<<endl;
}else{
cout<<"OK"<<endl;
}
}else{
cout<<"ERR"<<endl;
}
}
else{
if(f){
bool t=0;
int dizhi=0;
for(int j=1;j<i;j++){
if(a[j].name=="Server"&&(a[j].data==a[i].data)){
t=1;
dizhi=j;
break;
}
}
if(t){
cout<<dizhi<<endl;
}else{
cout<<"FAIL"<<endl;
}
}else{
cout<<"ERR"<<endl;
}
}
}
return 0;
}