关于CSP-J,T3
  • 板块灌水区
  • 楼主Tz_Obopn233
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/10/23 17:22
  • 上次更新2023/11/4 02:40:34
查看原帖
关于CSP-J,T3
321344
Tz_Obopn233楼主2021/10/23 17:22

RT,各位看这样写对嘛

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<cmath>
using namespace std;
int t,a[15],se,cl,oo;
char server[1005][1005];
char all[1005][1005],p[1005];
char s[1005],soc[25];
int main() {
    scanf("%d",&t);
    while(t--) {
        scanf("%s %s",soc+1,s+1); int n=strlen(s+1);
        ++oo;
        for(int i=1;i<=n;i++) all[oo][i]=s[i];
        p[oo]=soc[1];
        int dian=0,mao=0;
        for(int i=1;i<=n;i++) {
            if(s[i]=='.') dian++;
            else if(s[i]==':') mao++;
        }
        if(dian!=3&&mao!=1) {
            printf("ERR\n");
            continue;
        }
        bool can=true; bool flag=true;
        int oppo=0,k=0;
        for(int i=1;i<=n;i++) {
            if(s[i]=='.'||s[i]==':') {
                a[++k]=oppo;
                oppo=0; can=true;
            }
            if(s[i]>='0'&&s[i]<='9') {
                if(s[i]=='0'&&(s[i+1]>='0'&&s[i+1]<='9')&&can) flag=false;
                else can=false;
                oppo=oppo*10+(s[i]-'0');
            }
        }
        a[++k]=oppo;
        if(k>5) {
            printf("ERR\n");
            continue;
        }
        for(int i=1;i<=k;i++) {
            if(i==5) {
                if(a[i]<0||a[i]>65535) flag=false;
            } else {
                if(a[i]<0||a[i]>255) flag=false;
            }
        }
        if(!flag) {
            printf("ERR\n");
            continue;
        }
        if(soc[1]=='S') {
            bool flag2=true;
            ++se;
            for(int i=1;i<=n;i++) {
                server[se][i]=s[i];
            }
            for(int i=1;i<se;i++) {
                if(strcmp(server[i]+1,server[se]+1)==0) {
                    printf("FAIL\n");
                    flag2=false;
                    break;
                }
            }
            if(flag2) printf("OK\n");
        }
        else {
            bool flag3=false; int kkk=0;
            for(int i=1;i<=se;i++) {
                if(strcmp(server[i]+1,s+1)==0) {
                    flag3=true; kkk=i;
                    break;
                }
            }
            if(!flag3) {
                printf("FAIL\n");
                continue;
            }
            for(int i=1;i<=oo;i++) {
                if(strcmp(all[i]+1,server[kkk]+1)==0&&p[i]=='S') {
                    printf("%d\n",i);
                    break;
                }
            }
        }
    }
    return 0;
}
2021/10/23 17:22
加载中...