55分
查看原帖
55分
1019317
zqhbxsgs楼主2024/9/26 17:05

帮帮蒟蒻吧

#include<bits/stdc++.h>
using namespace std;
string o,p;
string ans[1010];
map<string,int> cli;
map<string,bool> ser;
int wei(int x){
	if(x == 0){
		return 1;
	}
	int ans = 0;
	while(x){
		ans ++;
		x/=10;
	}
	return ans;
}
bool True(string x){
	int a = 0,e = 0,i = 0,j = 0,k = 0,f;
	for(;i < x.size();i ++){
		if(x[i] == '.' || x[i] == ':'){
			if(i - j != wei(a)){
				return false;
			}
			if(x[i] == ':'){
				f = 1;
			}
			if(x[i] == '.'){
				k ++;
			}
			if(x[i] == ':' && k != 3){
				return false;
			}
			if((x[i] == ':' || x[i] == '.') && a <= 255 && a >= 0){
				j = i + 1;
				a = 0;
				continue;
			}
		}
		if(x[i] < '0' || x[i] > '9'){
			return false;
		}
		a = a * 10 + x[i] - 48;
	}
	if(a == 0 && i - j != 1 || !f){
		return false;
	}
	if(a >= 0 && a <= 65535){
		return true;
	}
}
string str(int x){
	string a = "";
	int y;
	while(x){
		y = x % 10;
		a = (char)(y + 48) + a;
		x /= 10;
	}
	return a;
}
int main(){
	int _;
	cin >> _;
	for(int op = 1;op <= _;op ++){
		cin >> o >> p;
		if(o == "Server"){
			if(ser[p]){
				ans[op] = "FAIL\n";
				continue;
			}
			if(True(p)){
				cli[p] = op;
				ser[p] = true;
				ans[op] = "OK\n";
				continue;
			}else{
				cli[p] = op;
				ans[op] = "ERR\n";
				continue;
			}
		}else {
			if(!True(p)){
				ans[op] = "ERR\n";
				continue;
			}
			if(!ser[p]){
				ans[op] = "FAIL\n";
				continue;
			}else{
				ans[op] = str(cli[p]) + "\n";
				continue;
			}
		}
	}
	for(int op = 1;op <= _;op ++){
		cout << ans[op];
	}
	return 0; 
}
2024/9/26 17:05
加载中...