65pts 必关
查看原帖
65pts 必关
699271
gaojizhe05楼主2024/10/4 21:20
#include <bits/stdc++.h>
int n;
std::string op, ad;
std::unordered_map <long long, int> hs;
int main(){
    //freopen("put.out", "w", stdout);
    std::cin >> n;
    for(int k = 1; k <= n; k++){
        std::cin >> op >> ad;
        int num[5], cnt = 0;
        bool eer = false;
        num[0] = num[1] = num[2] = num[3] = num[4] = 0;
        for(int i = 0; i < ad.length(); i++){
            if(ad[i] == '.' || ad[i] == ':'){
                cnt++;
                if(cnt == 5 || i == ad.length() - 1){
                    eer = true; break;
                }
            }
            else if(ad[i] >= '0' && ad[i] <= '9'){
                num[cnt] = num[cnt] * 10 + ad[i] - '0';
                if((cnt <= 3 && num[cnt] > 255)||(cnt == 4 && num[cnt] > 65535)||(num[cnt] == 0 && ad[i] == '0' && ad[i+1] != '.' && ad[i+1] != ':')){
                    eer = true; break;
                }
            }
            else{
                eer = true; break;
            }
        }
        //std::cout<<cnt<<std::endl;
        if(eer || cnt < 4){
            std::cout<<"ERR\n";
            continue;
        }
        //std::cout<<num[0]<<' '<<num[1]<<' '<<num[2]<<' '<<num[3]<<' '<<num[4]<<'\n';
        long long id = 0;
        for(int i = 0; i < 4; i++) id = id * 1000 + num[i];
        id = id * 100000 + num[4];
        //std::cout<<"id:"<<id<<std::endl;
        if(op == "Server"){
            if(hs[id] == 0){
                hs[id] = k;
                std::cout<<"OK\n";
            }
            else std::cout<<"FAIL\n";
        }
        else{
            if(hs[id] == 0) std::cout<<"FAIL\n";
            else std::cout<<hs[id]<<std::endl;
        }
    }
    return 0;
}
2024/10/4 21:20
加载中...