0分
查看原帖
0分
639237
VictoryBob0820楼主2023/7/25 12:51
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
struct Server{
	string name;
	int id;	
}sv[1002]; 
int cnt=1;
bool check(string s){
	int ne, ns, num;
	if(s.size()>25){
		return false;
	}
	for(int i=1; i<=4; i++){
		num=0;
		if(i<=3){
			ne=s.find(".", ns);
		}else{
			ne=s.find(":", ns);
		}
		if(ne<0 || ne-ns>3 || ne-ns==0){
			return false;
		}
		if(s[ns]=='0'&&s.size()-ns>1){
			return false;
		}
		for(int j=ns; j<ne; j++){
			if(!isdigit(s[j])){
				return false;
			}
			num=num*10+s[j]-'0';
		}
		if(num>255){
			return false;
		}
		ns=ne+1;
	}
	if(s.size()-ns>5 || s.size()==ns){
		return false;
	}
	num=0;
	for(int i=ns; i<s.size(); i++){
		num=num*10+s[i]-'0';
	}
	if(num>65535){
		return false;
	}
	return true;
}
int unique(string s){
	for(int i=1; i<cnt; i++){
		if(s==sv[i].name){
			return sv[i].id;
		}
	}
	return 0;
}
int main(){
	int x;
	string s1, s2;
	cin>>x;
	for(int i=1; i<=x; i++){
		cin>>s1>>s2; 
		if(!check(s2)){
			cout<<"ERR"<<endl;
			continue;
		}
		if(s1=="Server"){
			if(unique(s2)==0){
				cout<<"OK"<<endl;
				sv[cnt].id=i;
				sv[cnt].name=s2;
				cnt++;
			}else{
				cout<<"FAIL"<<endl;
			}
		}else{
			int num=unique(s2);
			if(num==0){
				cout<<"FAIL"<<endl;
			}else{
				cout<<num<<endl;
			}
		}
	}
	return 0;
}
2023/7/25 12:51
加载中...