75分,不知道错在哪
查看原帖
75分,不知道错在哪
1098596
WhiteNight__楼主2024/4/20 18:40
#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>

using namespace std;

#define ll long long

ll n , cnr;
string op , k;

ll zh (string s)
{
	if((s[0] == '0' && s.size() > 1) || s.size() > 5) return 1145141919810;
	ll ans = 0;
	for(unsigned ll i = 0 ; i < s.size() ; i ++)
	{
		ans = ans * 10 + (s[i] ^ 48);
	}
	
	return ans;
}

bool pd (string s)
{
	ll a = s.size() , o , cnt = 0 , lpd = 0 , rpd = 0;
	string sss = "\0";
	for(ll i = 0 ; i < a ; i ++)
	{
		if(!((s[i] >= '0' && s[i] <= '9') || s[i] == '.' || s[i] == ':' || s[i] == '\0')) 
			return false;
		if(s[i] >= '0' && s[i] <= '9') 
			sss = sss + s[i];
		
		else
		{
			o = zh(sss);
			sss = "\0";
			cnt++;
			if((cnt <= 4 && o > 255) || (cnt == 5 && o > 65535)) return false;
			
			if(s[i] == '.') lpd ++;
			else if(s[i] == ':') rpd++;
		}
		if(lpd > 3 || rpd > 1) return false;
	}
	o = zh(sss);
	cnt++;
	if((cnt == 5 && o > 65535) || cnt != 5) return false;
	
	if(lpd != 3 || rpd != 1) return false;
	return true;
}

map <string , ll> m;

int main()
{
	cin >> n;
	for(ll i = 1 ; i <= n ; i ++)
	{
		cin >> op;
		cin >> k;
		if(!pd(k)) cout << "ERR\n";
		else{
			if(op == "Server")
			{
				if(m.count(k) > 0) cout << "FAIL\n";
				else{
					cnr++;
					m.insert(pair<string , ll> (k , i));
					cout << "OK\n";
				}
			}
			else{
				if(m.count(k) > 0) cout << m[k] << "\n";
				else cout << "FAIL\n";
			}
		}
	}
	
	
	return 0;
}

求大佬

2024/4/20 18:40
加载中...