只有75,求调
查看原帖
只有75,求调
534953
Furina_zbg楼主2023/10/16 16:45
#include<bits/stdc++.h>
#define ERR printf("ERR\n");
#define OK printf("OK\n")
#define FAIL printf("FAIL\n")
#define False return false
#define True  return true
using namespace std;
int n; char tag[5] = {"...:"};
string s;
map<string, int> f;
bool number(char ch) {return ch >= '0' && ch <= '9';}
bool check_RIGHT(int len) {
	int i, t = 0;
	for (i = 0; i < len; ++i) {
		if(s[i] == tag[t]) ++t;
		if(t == 4) break;
	}
	if(t != 4) True;
	for (++i; i < len; ++i)
		if(!number(s[i])) True;
	False;
}
int longe(int x) {
	int k = 0;
	if(x == 0) return 1;
	while(x) ++k, x /= 10;
	return k;
}
bool check_FRONT(int len) {
	int x = 0, p = 0, i, t = 0;
	s[len] = ':';
	for (i = 0; i <= len; ++i) {
		if(number(s[i])) x = x * 10 + s[i] - '0', ++p;
		else {
			if(longe(x) == p) {
				if(!(t < 4 && x <= 255 || t == 4 && x <= 65535)) True;
			} else True;
			x = p = 0;
			++t;
		}
		if(x > 65535) True;
	}
	False;
}
void run(int id) {
	cin >> s;
	int k, len;
	if(s == "Server") k = 1; else k = 0;
	cin >> s; len = s.size();
	if(check_FRONT(len)){ERR; return;}
//	check_RIGHT(len) || 
	if(k)
		if(!f[s]){f[s] = id; OK; return;}
		else {FAIL; return;}
	if(!f[s]) {FAIL; return;}
	printf("%d\n", f[s]);
}
int main () {
	freopen("network.in", "r", stdin);
	freopen("network.out", "w", stdout);
	scanf("%d", &n);
	for (int i = 1; i <= n; ++i)
		run(i);
}
2023/10/16 16:45
加载中...