80分求调
查看原帖
80分求调
620253
MvemiY楼主2022/7/27 07:45

情况

#include<bits/stdc++.h>
using namespace std;
map <string, int> M;
bool is_num(char c){
	return c >= '0' && c <= '9';
}
bool ok(string str, string data){
	if(str.length() < data.length())		return 1;
	if(str.length() > data.length())		return 0;
	return str[0] != '-' && str <= data;
}
bool check(string str){
	string nums[10];
	char ch[10]; 	int len = 1, sl = str.length();
	for(int i = 0; i < sl; i++)
		if(!is_num(str[i])){
			ch[len++] = str[i];
			if(len > 5)
				return 0;
		}
		else if(str[i] != ' ') 
			nums[len] += str[i];
	if(len < 5)
		return 0;
	for(int i = 1; i <= 4; i++)
		if((nums[i][0] == '0' && nums[i].length() != 1 )|| !ok(nums[i], "255") || ch[i] != (i != 4 ? '.' : ':'))
			return 0;
	return ok(nums[5], "65535") && (nums[5][0] != '0' || nums[5].length() == 1);
}
int main(){
	freopen("outit.txt","w",stdout);
	int n;
	cin >> n;
	for(int i = 1; i <= n; i++){
		string a, str;
		cin >> a >> str;
		if(a == "Server"){
			if(check (str)){
				if(M[str])
					cout << "FAIL\n";
				else{
					cout << "OK\n";
					M[str] = i;
				}
			}
			else cout << "ERR\n";
		}
		else {
			if(check (str)){
				if(M[str])
					cout << M[str] << endl;
				else cout << "FAIL\n";
			}
			else cout << "ERR\n";
		}
	}
	return 0;
}
2022/7/27 07:45
加载中...