75分求助
查看原帖
75分求助
1121011
lifeiyang1楼主2024/10/23 10:30
#include<bits/stdc++.h>
using namespace std;
int n;
string op,ad;
int a[100],cnt=0,f[1005][10];
int check(){
	for(int i=1;i<=cnt;i++){
		bool flag=1;
		for(int j=1;j<=5;j++){
			if(f[i][j]!=a[j]){
				flag=0;
				break;
			}
		}
		if(flag==1) return f[i][8];
	}
	return 0;
}
int main(){
	scanf("%d",&n);
	for(int k=1;k<=n;k++){
		cin>>op>>ad;
		int len=ad.size();
		int w=0,ans=0,sum=0,flag=0;
		while(w<len){
			if(ad[w]=='0'&&ad[w+1]>='0'&&ad[w+1]<='9'){
				flag=1;
				break;
			}
			if(!(ad[w]>='0'&&ad[w]<='9')) {
				flag=1;
				break;
			}
			while(ad[w]>='0'&&ad[w]<='9'){
				sum=sum*10+(ad[w]-'0');
				if(ans+1<=4){
					if(sum>255){
						flag=1;
						break;
					}
				}
				if(ans+1==5){
					if(sum>65535){
						flag=1;
						break;
					}
				}
				w++;
			}
			a[++ans]=sum;
			if(flag==1) break;
			sum=0;
			if(ans==4&&ad[w]!=':'){
				flag=1;
				break;
			}
			if(ans<4&&ad[w]!='.'){
				flag=1;
				break;
			}
			w++;
			if(ans>5){
				flag=1;
				break;
			}
		}
		if(ans!=5) flag=1;
		if(flag){
			printf("ERR\n");
			continue;
		}
		if(op=="Server"){
			if(check()>0){
				printf("FAIL\n");
				continue;
			}
			++cnt;
			for(int i=1;i<=5;i++){
				f[cnt][i]=a[i];
			}
			f[cnt][8]=k;
			printf("OK\n");
		}
		if(op=="Client"){
			int l=check();
			if(l==0){
				printf("FAIL\n");
				continue;
			}
			printf("%d\n",l);
		}
	}
	return 0;
}
2024/10/23 10:30
加载中...