95分
查看原帖
95分
492771
yanquan2010楼主2021/10/25 13:05

数据点13WA了

#include<bits/stdc++.h>
#include<string>
#include<vector>
using namespace std;
int n;
vector <string> a;
int f[1010];
bool check(string x){
	int suml=0,sum2=0;
	for(int i=0;i<x.size();i++){
		if(x[i]=='.')suml++;
		if(x[i]==':'&&suml!=3)return 0;
		if(x[i]==':')sum2++;
	}
	if(suml!=3)return 0;
	if(sum2!=1)return 0;
	int	l[6],r[6],cnt=0;
	for(int i=0;i<x.size();i++){
		if(x[i]>'9'||x[i]<'0'){continue;}
		if(((x[i-1]<'0'||x[i-1]>'9')||i==0)&&(x[i]>='0'&&x[i]<='9')){
			l[++cnt]=i;
		}
		if(((x[i+1]>'9'||x[i+1]<'0')||i==x.size())&&(x[i]>='0'&&x[i]<='9')){
			r[cnt]=i;
		}
	}
	int ans[6];
	memset(ans,0,sizeof(ans));
	long long tmp=1;
	for(int i=1;i<=cnt;i++){
		tmp=1;
		for(int j=r[i];j>=l[i];j--){
			ans[i]+=(x[j]-'0')*tmp;
			tmp*=10;
			if(x[j]=='0'&&j==l[i]&&l[i]!=r[i])return 0;
		}
	}
	for(int i=1;i<=4;i++)
		if(ans[i]>255||ans[i]<0)return 0;
	if(ans[5]<0||ans[5]>65535)return 0;
	return 1;
}
int main(){                
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		string x,y;
		cin>>x>>y;
		if(check(y)){
			if(x=="Server"){
				bool flag=1;
				for(int j=0;j<a.size();j++){
					if(y==a[j]){flag=0;break;}
				}
				if(flag){
					printf("OK\n");
					a.push_back(y);
					f[a.size()-1]=i;
				}
				else printf("FAIL\n");
			}
			if(x=="Client"){
				bool flag=1;
				for(int j=0;j<a.size();j++){
					if(y==a[j]){
						flag=0;
						printf("%d\n",f[j]);
						break;
					}
				}
				if(flag)printf("FAIL\n");
			}
		}else{
			printf("ERR\n");
		}
	}
	return 0;
}


2021/10/25 13:05
加载中...