90pts求调,悬赏1关
查看原帖
90pts求调,悬赏1关
835856
Terry_MC楼主2023/9/22 22:39

WAWA\quad#1717#1818

评测记录

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int now=0;
struct ip{
    int a,b,c,d,e,i;
    bool c_or_s;
    ip(int aa,int bb,int cc,int dd,int ee,bool cs,int ii){
        a=aa,b=bb,c=cc,d=dd,e=ee,c_or_s=cs,i=ii;
    }
    ip(){}
    bool operator==(const ip a)const{
        return a.a==this->a&&a.b==this->b&&a.c==this->c&&a.d==this->d&&a.e==this->e&&a.c_or_s;   
    }
    void print(){
        //cerr<<this->a<<'.'<<this->b<<'.'<<this->c<<'.'<<this->d<<':'<<this->e<<" c_or_s:"<<this->c_or_s<<" index:"<<this->i<<endl;
    }
};
string shuru;
ip ips[1005];
int n,bianhao,cnt;
bool have_ip(ip a){
    for(int i=1;i<=cnt;i++){
        //cerr<<"have ip():";
        ips[i].print();
        if(a==ips[i]){
            if(!ips[i].c_or_s)
                continue;
            //cerr<<"eqauls"<<endl;
            bianhao=ips[i].i;
            return true;
        }
    }
    return false;
}
string read_ip(bool c_or_s){
    cin>>shuru;
    int len=shuru.length();
    int now=1,a=0,b=0,c=0,d=0,e=0,mh=0,dot=0,zero=0;
    bool no_a=true,no_b=true,no_c=true,no_d=true,no_e=true;
    for(int i=0;i<len;i++){
        if(shuru[i]>='0'&&shuru[i]<='9'){
            switch (now)
            {
                case 1:
                    no_a=false;
                    a=a*10+shuru[i]-48;
                    if(a==0)
                        zero++;
                    if(zero>1){
                        zero=0;
                        return "ERR";
                    }
                    break;
                case 2:
                    no_b=false;
                    b=b*10+shuru[i]-48;
                    if(b==0)
                        zero++;
                    if(zero>1){
                        zero=0;
                        return "ERR";
                    }
                    break;
                case 3:
                    no_c=false;
                    c=c*10+shuru[i]-48;
                    if(c==0)
                        zero++;
                    if(zero>1){
                        zero=0;
                        return "ERR";
                    }
                    break;
                case 4:
                    no_d=false;
                    d=d*10+shuru[i]-48;
                    if(d==0)
                        zero++;
                    if(zero>1){
                        zero=0;
                        return "ERR";
                    }
                    break;
                case 5:
                    no_e=false;
                    e=e*10+shuru[i]-48;
                    if(e==0)
                        zero++;
                    if(zero>1){
                        zero=0;
                        return "ERR";
                    }
                    break;
                default:
                    return "ERR";
            }
        }
        if(shuru[i]=='.'||shuru[i]==':'){
            if(shuru[i]=='.'){
                dot++;
                if(mh>0){
                    return "ERR";
                }
            }
            if(shuru[i]==':'){
                mh++;
                if(dot!=3){
                    return "ERR";
                }
            }
            now++;
        }
    }
    string pd=to_string(a)+"."+to_string(b)+"."+to_string(c)+"."+to_string(d)+":"+to_string(e);
    //cerr<<pd<<endl;
    if(!(pd==shuru)){
        return "ERR";
    }
    if(now!=5||a>255||b>255||c>255||d>255||e>65535||no_a||no_b||no_c||no_d||no_e||mh!=1||dot!=3){
        return "ERR";
    }
    ip temp(a,b,c,d,e,c_or_s,cnt);
    temp.print();
    if(c_or_s){
        if(have_ip(temp))
            return "FAIL";
        ips[cnt]=temp;
        return "OK";
    }
    else if(!c_or_s){
        if(have_ip(temp)){
            ips[cnt]=temp;
            return to_string(bianhao);
        }
        return "FAIL";
    }
    return "只是为了编译通过而写的一个没用字符串啊啊啊啊啊啊啊啊";

}
int main(){
    cin>>n;
    while(n--){
        cin>>shuru;
        cnt++;
        if(shuru=="Server"){
            cout<<read_ip(1)<<endl;
        }
        else{
            cout<<read_ip(0)<<endl;
        }
    }
    
    //system("pause");
    return 0;
}
2023/9/22 22:39
加载中...