求助大佬,95pts
查看原帖
求助大佬,95pts
577631
zundamon楼主2022/2/9 13:37

wa点#19和#21

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
struct node{
	string ip;
	ll ni;
};

ll n;
string ip_address[10100];
node stk[10100];
ll top=0;

bool check(string s1){
	//检查是否可以链接 
	for(int i=0;i<top;i++){
		if(stk[i].ip==s1){
			return 0;
		}
	}
	return 1;
}
bool checktrue(string s2){
	if(s2[0]=='.'||s2[0]==':'||s2[s2.length()-1]=='.'||s2[s2.length()-1]==':') return 0;
	//检查是否为正确的ip 
	s2[s2.length()]=':';
	ll fd[50];
	int tmp=0;
	int fjd=0;
	int sdian=0,smh=0;
	for(int i=0;i<s2.length()+1;i++){
		
		if(s2[i]=='.'){
			if(s2[i+1]=='.') return 0;
			fd[fjd]=tmp;
			fjd++;
			sdian++;
			
			tmp=0;
			continue;
		}else if(s2[i]==':'){
			if(sdian!=3) return 0;
			fd[fjd]=tmp;
			fjd++;
			smh++;
			tmp=0;
			continue;
			//Server 192.156.0.12:123
		}else if(s2[i]=='0'){
			if((i==0||s2[i-1]=='.'||s2[i-1]==':')&&(s2[i+1]!='.'&&s2[i+1]!=':')){
				
				//cout<<(s2[i+1]!='.'||s2[i+1]!=':');
				
				return 0;
			}
		}
		tmp*=10;
		tmp+=s2[i]-'0';
		if(tmp>65535) return 0;
	}
	
	if(!(sdian==3&&smh==2)){
		return 0;
	}
	for(int i=0;i<4;i++){
		if(fd[i]>255){
			return 0;
		}
	}
	if(fd[4]>65535){
		return 0;
	}
	return 1;
}
int main(){
	//freopen("network.in","r",stdin);
	//freopen("network.out","w",stdout);
	scanf("%lld",&n);
	
	for(int i=1;i<=n;i++){
		string s1;
		cin>>s1;
		string s2;
		cin>>s2;
		if(checktrue(s2)){
			
			if(s1=="Server"){
				if(check(s2)){
					stk[top].ip=s2;
					stk[top].ni=i;
					top++;
					printf("OK\n");
				}else{
					printf("FAIL\n");
				}
				
			}else if(s1=="Client"){
				int flag=1;
				for(int i=0;i<top;i++){
					if(stk[i].ip==s2){
						printf("%lld\n",stk[i].ni);
						flag=0;
						break;
					}
				}
				if(flag)printf("FAIL\n");
			}
		}else{
			printf("ERR\n");
		}
	}
	//fclose(stdin);
	//fclose(stdout);
	return 0;
}
2022/2/9 13:37
加载中...