社区讨论

55 PTs

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mhj9du1r
此快照首次捕获于
2025/11/03 22:52
4 个月前
此快照最后确认于
2025/11/03 22:52
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;

set <string> host;
map <string, int> id;

inline bool check(string sit) {
    int dot = 0, colon = 0;
    for (size_t i = 0; i < sit.size(); i++) {
        if (sit[i] == '.') {
            dot++;
        } else if (sit[i] == ':') {
            colon++;
        }
    }
    if (dot != 3 || colon != 1) {
        return false;
    }
    int cnt = 0;
    bool col = false;
    for (size_t i = 0; i < sit.size(); i++) {
        if (sit[i] == ':') {
            col = true;
        }
        
        if (sit[i] == '.' || sit[i] == ':') {
            cnt = 0;
            continue;
        }

        if (col) {
            if (cnt > 65535) {
                return false;
            }
        } else {
            if (cnt > 255) {
                return false;
            }
        }
        if (!isdigit(sit[i-1]) && sit[i] == '0' && isdigit(sit[i+1])) {
            return false;
        }
        cnt = cnt * 10 + (sit[i] - '0');
    }
    return true;
}

int main() {
    int n;
    scanf("%d", &n);
    
    for (int i = 1; i <= n; i++) {
        string mode, sit;
        cin >> mode >> sit;

        
        if (check(sit)) {
            if (mode == "Server") {
                if (host.find(sit) != host.end()) {
                    cout << "FAIL" << endl;
                } else {
                    cout << "OK" << endl;
                    host.insert(sit);
                    id[sit] = i;
                }
            } else {
                if (host.find(sit) != host.end()) {
                    cout << id[sit] << endl;
                } else {
                    cout << "FAIL" << endl;
                }
            }
        } else {
            cout << "ERR" << endl;
        }
    }
    return 0;
}

回复

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

正在加载回复...