75pts求助
查看原帖
75pts求助
547238
篮网总冠军楼主2024/9/5 23:17
#include <bits/stdc++.h>
using namespace std;

map<string,int>mp;
int p(string s){
	int cnt=0;
	for(int i=0;i<s.length();i++){
		cnt=cnt*10+(s[i]-'0');
		if (cnt>65535) return 65537;
	}
	return cnt;
}
bool pd(string x){
	string s;
	int i=0;
	for(;i<x.length();i++){
		if ('0'<=x[i]&&x[i]<='9') s+=x[i];
		else break;
	}
	if (s.length()==0) return false;
	if (i==x.length()||x[i]!='.') return false;
	for(int i=0;i<s.length();i++){
		if ('1'<=s[i]&&s[i]<='9') break;
		if (s.length()!=1) return false;
	}
	if (p(s)>255) return false;
	i++;
	string s1;
	for(;i<x.length();i++){
		if ('0'<=x[i]&&x[i]<='9') s1+=x[i];
		else break;
	}
	if (s1.length()==0) return false;
	if (i==x.length()||x[i]!='.') return false;
	for(int i=0;i<s1.length();i++){
		if ('1'<=s1[i]&&s1[i]<='9') break;
		if (s1.length()!=1) return false;
	}
	if (p(s1)>255) return false;
	i++;
	string s2;
	for(;i<x.length();i++){
		if ('0'<=x[i]&&x[i]<='9') s2+=x[i];
		else break;
	}
	if (s2.length()==0) return false;
	if (i==x.length()||x[i]!='.') return false;
	for(int i=0;i<s2.length();i++){
		if ('1'<=s2[i]&&s2[i]<='9') break;
		if (s2.length()!=1) return false;
	}
	if (p(s2)>255) return false;
	i++;
	string s3;
	for(;i<x.length();i++){
		if ('0'<=x[i]&&x[i]<='9') s3+=x[i];
		else break;
	}
	if (i==x.length()||x[i]!=':') return false;
	for(int i=0;i<s3.length();i++){
		if ('1'<=s3[i]&&s3[i]<='9') break;
		if (s3.length()!=1) return false;
	}
	if (p(s3)>255) return false;
	i++;
	string s4;
	for(;i<x.length();i++){
		if ('0'<=x[i]&&x[i]<='9') s4+=x[i];
		else break;
	}
	if (i<x.length()) return false;
	for(int i=0;i<s4.length();i++){
		if ('1'<=s4[i]&&s4[i]<='9') break;
		if (s4.length()!=1) return false;
	}
	if (p(s4)>65535) return false;
	return true;
}
int main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	int n;
	cin>>n;
	mp.clear();
	for(int i=1;i<=n;i++){
		string s,x;
		cin>>s>>x;
		if(s=="Server"){
			if (mp[x]>0) printf("FAIL\n");
			else{
				if (pd(x)) {
					mp[x]=i;
					printf("OK\n");
				}
				else printf("ERR\n");
			}
		}
		else{
			if(mp[x]>0) printf("%d\n",mp[x]);
			else if (pd(x)) printf("FAIL\n");
			else printf("ERR\n");
		}
	} 
	return 0;
}
2024/9/5 23:17
加载中...