社区讨论

20求调

P7911[CSP-J 2021] 网络连接参与者 2已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@lo118jq7
此快照首次捕获于
2023/10/22 13:32
2 年前
此快照最后确认于
2023/11/02 13:03
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int server[65540];
string s[1005];
int main(){
    //freopen("network.in","r",stdin);
    //freopen("network.out","w",stdout);
    int n,k=0;
    cin>>n;
    memset(server,sizeof(server),0);
    while(n--){
        string w;
        k++;
        cin>>w>>s[k];
        bool b=true;
        int x=0,y=0,num=0;
        for(int i=0;i<s[k].size();i++){
            if((s[k][i]=='.'||s[k][i]==':')&&s[k][i+1]=='0'&&s[k][i+2]=='0'){
                b=false;
                //cout<<"qiandao"<<endl;
                break;
            }
            if(s[k][i]=='.'){
                x++;
                //cout<<endl;
                //cout<<"fuhao"<<' '<<num<<endl;
                if(num>255){
                   //cout<<s[i]<<' '<<num<<endl;
                    b=false;
                    break;
                }
                if(x>3){
                    b=false;
                    break;
                }
                num=0;
            }
            else if(s[k][i]==':'){
                y++;
                //cout<<endl;
                //cout<<"fuhao"<<' '<<num<<endl;
                if(num>255){
                    //cout<<s[i]<<' '<<num<<endl;
                    b=false;
                    break;
                }
                if(y>1){
                    b=false;
                    break;
                }
                num=0;
            }
            else {
                //cout<<"jiahe"<<endl;
                num=num*10+s[k][i]-'0';
                //cout<<num<<' ';
            }
        }
        //cout<<endl<<endl;
        if(num>65535){
            b=false;
        }
        if(b==false){
            cout<<"ERR"<<endl;
            continue;
        }
        else{
            if(w=="Server"){
                if(server[num]==0){
                    server[num]=k;
                    cout<<"OK"<<endl;
                    continue;
                }
                else{
                    cout<<"FAIL"<<endl;
                    continue;
                }
            }
            else{
                if(server[num]!=0){
                    //cout<<num<<' ';
                    if(s[k]==s[server[num]]){
                        cout<<server[num]<<endl;
                    }
                    else{
                        cout<<"FAIL"<<endl;
                    }
                    continue;
                }
                else{
                    cout<<"FAIL"<<endl;
                    continue;
                }
            }
        }
    }
}

回复

8 条回复,欢迎继续交流。

正在加载回复...