80pts求大佬调
查看原帖
80pts求大佬调
775490
JMCJimmyMaker楼主2024/1/25 21:47

这是80pts的程序

#include <bits/stdc++.h>
#define int long long
#define mm(a, b) memset(a, b, sizeof(a))
using namespace std;

int n, scnt = 0;
string server[1001];
int ccnt[1001];
string op, str;

bool judge(string s)
{
	if (s.length() > 21 || s.length() < 9) return 0;
	int idx = 0;
	for (int i = 1; i <= 4; i++)
	{
		if (s[idx] >= '0' && s[idx] <= '9')
		{
			int num = 0; bool flag = false;
			if (s[idx] == '0') flag = true;
			while (s[idx] >= '0' && s[idx] <= '9' && idx < s.length()) { num = num * 10 + (s[idx] - '0'); idx++; }
			if (flag && num != 0) return 0; if (num < 0 || num > 255) return 0;
		}
		else return 0;
		if (idx == s.length()) return 0; if (s[idx] != '.' && i != 4) return 0; idx++;
	}
	idx--; if (idx == s.length() - 1) return 0; if (s[idx] != ':') return 0; idx++;
	if (s[idx] >= '0' && s[idx] <= '9')
	{
		int num = 0; bool flag = false;
		if (s[idx] == '0') flag = true;
		while (s[idx] >= '0' && s[idx] <= '9' && idx < s.length()) { num = num * 10 + (s[idx] - '0'); idx++; }
		if (flag && num != 0) return 0; if (idx != s.length()) return 0; if (num < 0 || num > 65535) return 0;
	}
	else return 0;
	return 1;
}

bool Judge(string s)
{
	if (scnt == 0) return 0;
	for (int i = 1; i <= scnt; i++)
	{
		if (server[i] == s) return 1;
	}
	return 0;
}

void add_server(string s, int id)
{
	scnt++;
	server[scnt] = s;
	ccnt[scnt] = id;
}

int find_server(string s)
{
	for (int i = 1; i <= scnt; i++)
	{
		if (server[i] == s) return i;
	}
	return -1;
}

signed main()
{
	freopen("network3.in", "r", stdin);
	freopen("network3.out", "w", stdout);
	mm(ccnt, 0);
	scanf("%ld", &n);
	for (int i = 1; i <= n; i++)
	{
		cin >> op >> str;
		//		cout << s << endl;
		if (!judge(str)) printf("ERR\n");
		else if (op[0] == 'S')
		{
			if (!Judge(str))
			{
				add_server(str, i);
				printf("OK\n");
			}
			else printf("FAIL\n");
		}
		else
		{
			if (!Judge(str)) printf("FAIL\n");
			else
			{
				int p = find_server(str);
				printf("%d\n", ccnt[p]);
			}
		}
	}

	fclose(stdin);
	fclose(stdout);
	return 0;
}

哪位大佬帮帮蒟蒻

2024/1/25 21:47
加载中...