蒟蒻求助,65分
查看原帖
蒟蒻求助,65分
413065
xiezheyuan楼主2021/10/30 15:20
#include <cstdio>
#include <cctype>
#include <cstring>
#include <iostream>
#define LAR(a) (a>=0&&a<=255)
#define LAR2(a) (a>=0&&a<=65535)

using namespace std;

int readMethod(){
	string op;
	int opi;
	cin>>op;
	if(op=="Server"){
		opi=0;
	}
	else{
		opi=1;
	}
	return opi;
}

struct Ip{
	int a,b,c,d,e;
	bool operator==(const Ip y){
		return (this->a==y.a)&&(this->b==y.b)&&(this->c==y.c)&&(this->d==y.d)&&(this->e==y.e);
	}	
};

Ip make_ip(int a, int b, int c, int d, int e){
	Ip temp;
	temp.a=a;
	temp.b=b;
	temp.c=c;
	temp.d=d;
	temp.e=e;
	return temp;
}

const Ip specialValue = make_ip(-1,-1,-1,-1,-1);

int getInt(char end = '.'){
	int value=0,cnt=0;
	int p=0;
	bool showed = false;
	while(1){
		char c = getchar();
		if(isdigit(c)){
			if(!showed && c=='0'){
				p++;
			}
			if(c!='0'){
				showed = true;
				if(p!=0){
					return -1;
				}
			}
			value *= 10;
			value += (c - '0');
		}
		else if(c==end){
			break;
		}
		else{
			return -1;
		}
	}
	if(p>1){
		return -1;
	}
	return value;
}

Ip readIp(){
	int a = getInt();
	int b = getInt();
	int c = getInt();
	int d = getInt(':');
	int e = getInt('\n');
	if(LAR(a)&&LAR(b)&&LAR(c)&&LAR(d)&&LAR2(e)){
		return make_ip(a,b,c,d,e);
	}
	else{
		return specialValue;
	}
}
void _dbg_echoIp(Ip ip){
	if(ip==specialValue){
		printf("specialValue");
		return;
	}
	printf("%d.%d.%d.%d:%d", ip.a, ip.b,ip.c,ip.d,ip.e);
}

Ip servers[1005];
int now_servers = 0;

int main(){
	int n,cnt=0;
	scanf("%d", &n);
	while(cnt<n){
		int op = readMethod();
		getchar();
		Ip ip = readIp();
		if(ip==specialValue){
			printf("ERR\n");
		}
		else{
			if(!op){
			bool flag=true;
			for(int i=0;i<now_servers;i++){
				if(servers[i]==ip){
					printf("FAIL\n");
					flag=false;
					break;
				}
			}
			if(flag){
				printf("OK\n");
				servers[now_servers]=ip;
			}	
		}
		else{
			bool flag=true;
			for(int i=0;i<now_servers;i++){
				if(servers[i]==ip){
					printf("%d\n",i+1);
					flag=false;
					break;
				}
			} 
			if(flag){
				printf("FAIL\n");
			}
		}
		}
		cnt++;
		now_servers++;
	}
	return 0;
}
2021/10/30 15:20
加载中...