70分,球源代码上调
查看原帖
70分,球源代码上调
1286671
earyyds楼主2024/10/13 10:19
#include<bits/stdc++.h>
/*
5
Server 192.168.1.1:8080
Server 192.168.1.1:8080
Client 192.168.1.1:8080
Client 192.168.1.1:80
Client 192.168.1.1:99999
样例 
10
Server 192.168.1.1:80
Client 192.168.1.1:80
Client 192.168.1.1:8080
Server 192.168.1.1:80
Server 192.168.1.1:8080
Server 192.168.1.999:0
Client 192.168.1.1.8080
Client 192.168.1.1:8080
Client 192.168.1.1:80
Client 192.168.1.999:0
*/
using namespace std;
string s;long long n;
vector<string> o;
vector<long long> o1;
bool f = true;
long long shuzi(long long m,string a){
	long long ans = 0;
	bool flag = false;
	for(int i = 0;i < a.size();++i){
		if(a[i] >= '0' && a[i] <= '9'){
			flag = true;
			if(m == 1){
				ans *= 10;
				ans += (int)(a[i]-'0');
			} 
		}
		if(flag == true && (a[i] < '0' || a[i] > '9')){
			if(m <= 1){
				return ans;
			}
			flag = false;
			m--;
		}
		if(ans < 0 && i == a.size()-1){
			return -1;
		}
	}
	return ans;
}
bool shu(char a){
	if(a >= '0' && a <= '9'){
    	return true;
    }
    return false;
}
bool hefa(string a){
	long long x = 0,aga1=0,aga2=0;
	for(int i = 0;i < a.size();++i){
		if(a[i] == '.'){
			aga1++;
		}
		if(a[i] == ':'){
			aga2++;
		}
	}
	if(aga1 == 3 && aga2 == 1){
		
	}else{
		return false;
	}
	for(int i = 0;i < a.size();++i){
		if(a[i] == ':' || a[i] == '.'){
			if(a[i + 1] == '0' && shu(a[i+2])){
				return false;
			}
		}
	}
	for(int aaa = 0;aaa < 4;++aaa){
		for(int i = x;i < x + 3;++i){
			if(i != x && (a[i] == '.' || a[i] == ':')){
				x = i + 1;
				break;
			}
			if(!shu(a[i])){
				return false;
			}
			if(i == x + 2){
				if(a[i + 1] == '.' && aaa != 3 || a[i + 1] == ':' && aaa == 3){
					x = i + 2;
					break;
				}else{
					return false;
				}
			}
		}
	}
	for(int i = 0;i < 5;++i){
		if(i != 4){
			if(shuzi(i+1,a) >= 0 && shuzi(i+1,a) <= 255){
				
			}else{
				return false;
			}
		}else{
			if(shuzi(i+1,a) >= 0 && shuzi(i+1,a) <= 65535){
				
			}else{
				return false;
			} 
		}
	}
	return true;
}
int main(void){
//	freopen("network.in","r",stdin);
//	freopen("network.out","w",stdout);
	scanf("%lld",&n);
    for(int i = 0;i < n;++i){
    	cin >> s;f = true;
    	if(s == "Server"){//服务机 
    		cin >> s;
    		if(!hefa(s)){
    			printf("ERR\n");
    			f = false;
    			continue;
			}
			if(hefa(s)){
				for(int i = 0;i < o.size();++i){
					if(o[i] == s){
						printf("FAIL\n");
						f = false;
						break;
					}
				}	
			}
			if(f == true){
				o.push_back(s);
				o1.push_back(i+1);
				printf("OK\n");
			}
		}else if(s == "Client"){//客户端 
			cin >> s;
			f = false;
			if(hefa(s)){
				for(int i = 0;i < o.size();++i){
					if(o[i] == s){
						printf("%lld\n",o1[i]);
						f = true;
						break; 
					}
				}
				if(f == false){
					printf("FAIL\n");
				}
			}else{
				printf("ERR\n");
			}
		}
	}
	return 0;
}
2024/10/13 10:19
加载中...