比赛 20220418高一小测验 评测结果 RRRRRRRRRRRRRRRRRRRR
题目名称 网络连接 最终得分 0
用户昵称 䱖虁職 运行时间 0.010 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-04-18 20:33:51
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n;
map<string,int>address;
bool check(string s)
{
    int len=s.length();
    long long tmp=0;
    int cnt1=0,cnt2=0,cnt3=0;
    for(int i=0;i<len;i++)
    {
        if((i==0||(s[i-1]=='.'||s[i-1]==':'))&&s[i]>='0'&&s[i]<='9') cnt3++;
        if(s[i]=='.'||s[i]==':')
        {
            if(s[i]=='.') cnt1++;
            else if(s[i]==':') cnt2++;
            if(cnt1<3&&cnt2) return false;
            if(!cnt3) return false;
            if(0<=tmp&&tmp<=255)
            {
                tmp=0;
                continue;
            }
            else return false;
        }
        else if(s[i]<'0'||s[i]>'9') return false;
        if(i&&!tmp&&s[i-1]=='0') return false;
        tmp = tmp*10+s[i]-'0';
    }
    if(cnt1!=3||cnt2!=1||cnt3!=5) return false;
    if(0<=tmp&&tmp<=65535) return true;
    else return false;
}
int main(){
    //freopen("csp2021pj_network.in","r",stdin);
    //freopen("csp2021pj_network.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        string cpt,adr;
        cin>>cpt>>adr;
        if(!check(adr))puts("ERR");
        else if(cpt=="Server")
        {
            if(address.count(adr))puts("FAIL");
            else 
            {
                address[adr]=i;
                puts("OK");
            }
        }
        else if(cpt=="Client")
        {
            if(address.count(adr))printf("%d\n",address[adr]);
            else puts("FAIL");
        }
    }
    return 0;
}