65分求助
查看原帖
65分求助
749361
wzm12313楼主2022/10/1 18:56
#include<bits/stdc++.h>
using namespace std;
struct part_s_str{
    char op;
    int ed[5];
    bool f;
}str[1007];
int n;
bool find(int i){
    for(int j=0;j<i;++j){
        if(str[j].f)continue;
        bool flag=1;
        for(int k=0;k<5;k++)
			if(str[i].ed[k]!=str[j].ed[k]){
        		flag=0;
        		break;
		}
        if(flag){
            if(str[i].op=='S'){
                printf("FAIL\n");
                return false;
            }
            else{
                printf("%d\n",j+1);
                return true;
            }
        }
    }
    if(str[i].op=='S'){
        printf("OK\n");
        return 1;
    }
    else if(str[i].op=='C'){
        printf("FAIL\n");
        return 0;
    }
}
bool inputf(int i){
    int s=0;string t;bool f=0,ff=1;
    cin>>t;
    for(int j=0,k=0;j<t.size();j++){
        if(t[j]=='.'){
            s++;
            k++;
        }
        else if(t[j]==':'){
            if(s<3)return 0;
            f=1;
            k++;
            ff=0;
        }
        else if(t[j]>='0'&&t[j]<='9'){
            if((j-1>=0&&(t[j-1]=='.'||t[j-1]==':'))&&t[j]=='0'&&(j+1<t.size()&&t[j+1]!='.'&&t[j+1]!=':'))
			return 0;
            str[i].ed[k]*=10;
            str[i].ed[k]+=t[j]-'0';
        }
        else if(f&&t[j]=='.')return 0;
        else if(!(t[j]>='0'&&t[j]<='9')&&t[j-1]==t[j])return 0;
    }
    if(ff){
    	printf("ERR\n");
    	return 0;
	}
    for(int j=0;j<4;j++){
        if(str[i].ed[j]>255){
        	printf("ERR\n");
        	return 0;
		}
    }
    if(str[i].ed[4]>65535){
    	printf("ERR\n");
    	return 0;
	}
    return find(i);
}
int main(){
    //freopen("network.in","r",stdin);
    //freopen("network.out","w",stdout);
    cin>>n;
    for(int i=0;i<n;++i){
        string op;
        cin>>op;
        str[i].op=op[0];
        if(!inputf(i)){
            str[i].f=1;
        }
    }
    return 0;
}

改了好久才从0分改到65分,实在找不到其他错误了
记录

2022/10/1 18:56
加载中...