65pts求调
查看原帖
65pts求调
302153
DovFrcm楼主2021/11/7 15:23
#include<bits/stdc++.h>
#define int long long
using namespace std;

bool op(string m){
	int n = m.size();
	
	int sum1 = 0, mh = -1, df = 1;
	
	for(int i = 0; i < n; i++){
		if(m[i] == '.' && df)sum1++;
		if(m[i] == ':'){
			if(mh == -1){
				mh = i;
				df = 0;
			}else{
				return 0;
			}
		}
	}
	
	if(sum1 != 3 || mh == -1){
		return 0;
	}
	
	for(int i = 0; i < n; i++){
		if(m[i] == '.' && m[i + 1] == '.'){
			return 0;
		}
	}
	
	string gh[10005];
	int lengh = 0, x[10005];
	
	x[0] = 0;
	
	for(int i = 0; i < n; i++){
		if(m[i] == '.' || m[i] == ':'){
//			cout << endl;
			lengh++;
			x[lengh] = 0;
			continue;
		}
		gh[lengh][x[lengh]] = m[i];
//		cout << gh[lengh][x[lengh]] << ' ' << lengh << ' ' << x[lengh] << endl;
		x[lengh]++;
	}lengh++;
//	cout << endl;
	
//	cout << gh[0].size() << ' ' << gh[0][0] << endl;
	
	for(int i = 0; i < lengh - 1; i++){
		long long r = 0;
		if(x[i] == 0){
			return 0;
		}
		if(gh[i][0] == '0' && x[i] > 1){
			return 0;
		}
		for(int j = 0; j < x[i]; j++){
			r *= 10;
			r += gh[i][j] - '0';
		}
		if(r < 0 || r > 255){
			return 0;
		}
	}
	long long r = 0;
	
	if(gh[lengh - 1][0] == '0' && x[lengh - 1] > 1){
		return 0;
	}
	for(int j = 0; j < x[lengh - 1]; j++){
		r *= 10;
		r += gh[lengh - 1][j] - '0';
	}
	if(r < 0 || r > 65535){
		return 0;
	}
	
	if(m[m.size() - 1] == ':'){
		return 0;
	}
	
	return 1;
}

struct N{
	int gh;
	string s;
};

vector<N> Server;

bool find_Server(string s, int gh){
	for(int i = 0; i < Server.size(); i++){
		if(Server[i].s == s){
			return 0;
		}
	}
	
	N r;
	r.gh = gh;
	r.s = s;
	Server.push_back(r);
	
	return 1;
}

int Client(string s){
	for(int i = 0; i < Server.size(); i++){
		if(Server[i].s == s){
			return Server[i].gh;
		}
	}
	return 0;
}

signed main(){
//	freopen("network.in", "r", stdin);
//	freopen("network.out", "w", stdout);
	
	int n;
	cin >> n;
	
	for(int i = 1; i <= n; i++){
		string s1, s2;
		cin >> s1 >> s2;
		
		if(s1 == "Server"){
			if(op(s2)){
				if(find_Server(s2, i)){
					cout << "OK" << endl;
				}else{
					cout << "FAIL" << endl;
				}
			}else{
				cout << "ERR" << endl;
			}
		}else{
			if(op(s2)){
				int qwq = Client(s2);
				if(qwq){
					cout << qwq << endl;
				}else{
					cout << "FAIL" << endl;
				}
			}else{
				cout << "ERR" << endl;
			}
		}
	}
	
	return 0;
}

/*
5
Server 101.101.1.101:65535
*/

12-13,18-20 WA 16-17 RE 其余AC

2021/11/7 15:23
加载中...