75pts求调
查看原帖
75pts求调
959348
JustinXie楼主2024/9/30 19:46
#include<bits/stdc++.h>
using namespace std;
int n;
int pos[6];
int num[6];
int lenp=1;
int cnt1=0,cnt2=0;
string op,ad;
int fs=0;
string server[1010];
int to_int(string s,int id)
{
    if(s[0]=='0' && s!="0")
    {
        return -1;
    }
    int ans=0;
    for(int i=0; i<s.size(); i++)
    {
        ans=ans*10+(int)(s[i]-'0');
    }
    if(id<5)
    {
        return ((ans>=0 && ans<=255)? ans:-1);
    }
    else
    {
        return ((ans>=0 && ans<=65535)? ans:-1);
    }
}
int main()
{
    cin>>n;
    int f4=0;
    for(int p=1; p<=n; p++)
    {
        cin>>op>>ad;
        for(int i=0; i<ad.size(); i++)
        {
            if(ad[i]=='.')
            {
                pos[lenp]=i;
                lenp++;
                cnt1++;
            }
            else if(ad[i]==':')
            {
                pos[lenp]=i;
                lenp++;
                cnt2++;
            }
            if(lenp>5)
            {
                cout<<"ERR"<<endl;
                f4=1;
                break;
            }
        }
        if(f4==1)
        {
            lenp=1;
            cnt1=0,cnt2=0;
            continue;
        }
        if(lenp<5 || cnt1!=3 || cnt2!=1 || ad[pos[4]]!=':')
        {
            cout<<"ERR"<<endl;
            lenp=1;
            cnt1=0,cnt2=0;
            continue;
        }
        pos[0]=-1,pos[5]=ad.size();
        for(int i=1; i<=5; i++)
        {
            num[i]=to_int(ad.substr(pos[i-1]+1,pos[i]-pos[i-1]-1),i);
        }
        if(op=="Server")
        {
            if(num[1]==-1 || num[2]==-1 || num[3]==-1 || num[4]==-1 || num[5]==-1)
            {
                cout<<"ERR"<<endl;
            }
            else
            {
                int f=0;
                for(int i=1; i<=p; i++)
                {
                    if(server[i]==ad)
                    {
                        f=1;
                    }
                }
                if(f==1 && fs==1)
                {
                    cout<<"FAIL"<<endl;
                }
                else if(f==0 || fs==0)
                {
                    cout<<"OK"<<endl;
                    server[p]=ad;
                    fs=1;
                }
            }
        }
        else
        {
            if(num[1]==-1 || num[2]==-1 || num[3]==-1 || num[4]==-1 || num[5]==-1)
            {
                cout<<"ERR"<<endl;
            }
            else
            {
                int f=0;
                for(int i=1; i<=p; i++)
                {
                    if(server[i]==ad)
                    {
                        cout<<i<<endl;
                        f=1;
                        break;
                    }
                }
                if(f==0)
                {
                    cout<<"FAIL"<<endl;
                }
            }
        }
        lenp=1;
        cnt1=0,cnt2=0;
    }
    return 0;
}

2024/9/30 19:46
加载中...