65pit
查看原帖
65pit
610410
fenboQAQ楼主2023/7/8 18:25
#include <bits/stdc++.h>
using namespace std;
bool pd(string s)
{
	if(s == "") return true;
	if(s[0] == '.' || s[0] == ':') return true;
    bool flag = false;
    int a = 0;
    long long k = 0,d = 0,p,up = -1;
    for(long long i = 0;i < s.size();i ++)
    {
        if(s[i] == '.' && i - 1 != up) 
        {
        	up = i;
            if(a > 255)
            {
                flag = true;
                break;
            }
            k ++,a = 0;
        }
        else if(s[i] == ':')
        {
            p = i + 1;
            if(a > 255)
            {
                flag = true;
                break;
            }
            d ++,a = 0;
            break;
        } 
        else 
		{
			if(s[i] == '0' && s[i - 1] == '.' && s[i + 1] != '.' && s[i + 1] != ':') a = 114514; 
			a *= 10;
			a += s[i] - '0';
		}
    }  
    if(d != 1) return true;
    else if(k != 3) return true;
    else
    {
        a = 0;
        for(long long i = p;i < s.size();i ++)
        {
            a *= 10;
            a += s[i] - '0';
        }
        if(a >= 65535) return true;
        else return false;
    }
}
int main()
{
    long long n;
    cin >> n;
    string s[10005];
    for(long long i = 1;i <= n;i ++)
    {
        string ID,OP;
        cin >> ID >> OP;           
        if(ID == "Server")
        {
        	if(pd(OP))
            {
                cout << "ERR" << endl;
                continue;
            }
            bool flag = false;
            for(long long j = 1;j < i;j ++)
            {
                if(s[j] == OP)
                {
                     flag = true;
                     break;
                }
            }
            if(!flag)
            {
                cout << "OK" << endl;
                s[i] = OP;
            }
            else{
                cout << "FAIL" << endl;
            }
        }
        else{
            if(pd(OP))
            {
                cout << "ERR" << endl;
                continue;
            }
            bool flag = false;
            long long ans;
            for(long long j = 1;j < i;j ++)
            {
                if(s[j] == OP)
                {
                     flag = true,ans = j;
                     break;
                }
            }
            if(flag)
            {
                cout << ans << endl;
            }
            else{
                cout << "FAIL" << endl;
            }
        }
    }
    return 0;
}

测试记录

2023/7/8 18:25
加载中...