社区讨论

求助

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@m2o9nyl7
此快照首次捕获于
2024/10/25 13:03
去年
此快照最后确认于
2025/11/04 16:14
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;

struct Address {
  int a, b, c, d, e, space = 0;
};

Address address[1010];
Address tpaddress;

bool tpmain(Address tp) {
  if (tp.a < 0 || tp.b < 0 || tp.c < 0 || tp.d < 0 || tp.e < 0 || tp.a > 255 ||
      tp.b > 255 || tp.c > 255 || tp.d > 255 || tp.e > 65535)
    return false;
  return true;
}

// bool cmp(Address tp, Address tb) {
//   if (tp.a > tb.a) {
//     return true;
//   } else if (tp.a == tb.a) {
//     if (tp.b > tb.b) {
//       return true;
//     } else if (tp.b == tb.b) {
//       if (tp.c > tb.c) {
//         return true;
//       } else if (tp.c == tb.c) {
//         if (tp.d > tb.d) {
//           return true;
//         } else if (tp.d == tb.d) {
//           if (tp.e > tb.e) {
//             return true;
//           } else {
//             return false;
//           }
//         }
//       }
//     }
//   }
// }

bool cmpsame(Address tp, Address tb) {
  if (tp.a == tb.a && tp.b == tb.b && tp.c == tb.c && tp.d == tb.d &&
      tp.e == tb.e)
    return 1;
  return 0;
}

int main() {
  int n, k = 0;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    string s;
    cin >> s;
    char ca,cb,cc,cd;
    scanf("%d%c%d%c%d%c%d%c%d",&tpaddress.a,&ca,&tpaddress.b, &cb,&tpaddress.c, &cc,&tpaddress.d,&cd,&tpaddress.e);

    if(tpmain(tpaddress) == 0||ca != '.'||cb != '.'||cc != '.'||cd != ':'){
      printf("ERR\n");
      continue;
    }
    //---------ERR判断---------
    if (s == "Server") {
      bool op = 0;
      for (int i = 1; i <= k; i++) {
        if (cmpsame(address[i], tpaddress) == 1){
          op = 1;
          break;
        }
      }
      if (op) {
        printf("FAIL\n");
        continue;
      } else {
        k++;
        printf("OK\n");
        address[k].a = tpaddress.a;
        address[k].b = tpaddress.b;
        address[k].c = tpaddress.c;
        address[k].d = tpaddress.d;
        address[k].e = tpaddress.e;
        address[k].space = i;
        //sort(address + 1, address + k + 1, cmp);
        continue;
      }
    }
    //----------服务器完毕----------
    else {
      int op = 0;
      for(int j = 1;i <= k; j++){
        if (cmpsame(address[j], tpaddress) == 1){
          op = j;
          break;
        }
      }if (op > 0) {
        printf("%d\n",address[op].space);
        continue;
      }else{
        printf("FAIL\n");
      }
    }
  }
  return 0;
}
数据
CPP
10
Server 207.231.221.77:51007
Server 79.243.216.144:13350
Server 58.119.187.226:51586
Server 247.150.225.186:5558
Server 100.248.83.30:3352
Server 98.78.97.34:59089
Client 243.9.80.71:15160
Client 178.5.220.233:17605
Client 100.248.83.30:3352
Client 98.78.97.34:59089
我输出了
CPP
OK
OK
OK
OK
OK
OK
FAIL
FAIL
FAIL
FAIL
答案后两个是5和6

回复

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

正在加载回复...