25分到65分到90分,一直错
查看原帖
25分到65分到90分,一直错
1061745
yzl0225楼主2023/10/20 19:51

蒟蒻求助!
代码:

#include<bits/stdc++.h>
#include<stdio.h>
using namespace std;
string op,ad;
char z[10]={'.','.','.',':'};
set<string>a;
map<string,int>p;
int isok(string s){
	int fa=2,l=0;
	int ans=0;
	if(s[0]=='.'||s[0]==':') return 0;
	for(int i=0;i<=s.size()-1;i++){
		if(fa==1){
			if(s[i]!=z[l]) return 0;
			fa=2,l++;
			if(s[i+1]=='.'||s[i+1]==':'||s[i+1]=='-') return 0;
			continue;
		}
		ans=ans*10+s[i]-'0';
		if(l==4){
			if(l==4&&ans>=65536) return 0;
		} 
		if(s[i+1]=='.'||s[i+1]==':'){
			fa=1;
			
			if(l<=3&&ans>=256) return 0;
			
			ans=0;
			continue;
		}
		if(s[i]=='0'&&s[i+1]!='.'&&s[i+1]!=':'&&i!=s.size()-1&&fa==2) return 0;
		if(fa==2) fa=0;
	}
	if(l==4&&ans>=65536||l!=4||(ans==0&&s[s.size()-1]!='0')) return 0;
	return 1;
}
int main(){
	int n;
//	freopen("luogu.in","r",stdin);
//	freopen("my.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>op>>ad;
		if(isok(ad)!=1){
			cout<<"ERR\n";
			continue;
		}
		if(op=="Server"){
			int l=a.size();
			a.insert(ad);
			if(a.size()==l){
				cout<<"FAIL\n";
			}
			else{
				cout<<"OK\n";
				p[ad]=i;
			}
		}
		else{
			if(a.count(ad)==1){
				cout<<p[ad]<<endl;
			}
			else{
				cout<<"FAIL\n";
			}
		}
	}
} 

最终结果

2023/10/20 19:51
加载中...