5px!!! 样例过了
查看原帖
5px!!! 样例过了
1011277
laozhang_123楼主2023/10/18 12:55
#include<bits/stdc++.h>
using namespace std;
struct Server{
	int a,b,c,d;	//IP地址
	int e;			//端口
	int p;			//服务器编号 
	Server(){}
	Server(int _a,int _b,int _c,int _d,int _e,int _p){
		a=_a;
		b=_b;
		c=_c;
		d=_d;
		e=_e;
		p=_p;}
	bool operator==(const Server& t) const{
		if(a==t.a&&b==t.b&&c==t.c&&d==t.d&&e==t.e) return 1;
		return 0;}
};
int a,b,c,d,e,n;
//如果服务器合法且服务器之前不存在,装入服务器列表 
int len=0;			//服务器的个数 
Server sv[1010];
bool fun(string s){
	a=b=c=d=e=-1;
	sscanf(s.c_str(),"%d.%d.%d.%d:%d",&a,&b,&c,&d,&e);
	if((a<=0||a>=255)||(b<=0||b>=255)||(c<=0||c>=255)||(d<=0||d>=255)||(e<=0||e>=65535)) return false;
	char buf[30];
	sprintf(buf,"%d.%d.%d.%d:%d",a,b,c,d,e);
	string ns(buf);
	if(ns!=s) return false;
	return true;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		string op,ad;
		cin>>op>>ad;
		//先判断ad是否合法
		//求得a,b,c,d,e 
		//如果不符合规范,直接ERR
		if(fun(ad)==false){
			cout<<"ERR"<<endl;
			continue;}
		Server t(a,b,c,d,e,i);//构造这个服务器的结构体变量 
		//判断是服务器还是客户端
		if(op=="Server"){
			//去查找是否已经存在该服务器
			bool flag=false; 	//标记是否存在 
			//如果存在则FAIL
			for(int i=1;i<=len;i++){
				if(sv[i]==t){
					flag=true;
					cout<<"FAIL"<<endl;
					break;}}
			//如果不存在则OK,创建该服务器 
			if(flag==false){
				sv[++len]=t;
				cout<<"OK"<<endl;}
		} 
		else{
			//去查找是否存在相应的服务器
			bool flag=false; 	//标记是否存在 
			for(int i=1;i<=len;i++){
				if(sv[i]==t){
					flag=true;
					//如果存在,输出服务器的编号
					cout<<sv[i].p<<endl;
					break;}}
			//如果不存在,则输出FAIL 
			if(flag==false) cout<<"FAIL"<<endl;}}
}
2023/10/18 12:55
加载中...