记录编号 570790 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [CSP 2021J]网络连接 最终得分 100
用户昵称 Gravatar什么都想学什么都学了一点的晓无痕 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2022-04-18 21:54:38 内存使用 0.00 MiB
显示代码纯文本
    #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;
    }