蒟蒻10分代码求调
查看原帖
蒟蒻10分代码求调
452877
dbcOVO楼主2022/8/3 16:52
#include<bits/stdc++.h>
using namespace  std;
int n;
map<string,int> r;
int point[100000];
int check(string s){
	if(s[0]=='0') return 0;
	int cnt=0;
	for(int i=1;i<=10000;i++) point[i]=0;
                             
	for(int i=0;i<s.size();i++){ 
		if(s[i]=='.'||s[i]==':'){
			cnt++;
			point[cnt]=i;
		}
	}
  
	for(int i=1;i<=cnt;i++){ 
		if(s[point[i]+1]=='0'){
			return 0;
		}
	}
                            
	for(int i=1;i<=cnt;i++){
		if(i==1){
			int sum=0;
			for(int j=0;j<point[i];j++){
				sum=sum*10+s[j]-'0';
			}
			if(sum<0||sum>255) return 0;
			sum=0;
			continue;
		}
		else if(i!=1&&i<=cnt-1){
			int sum=0;
			for(int j=point[i-1]+1;j<point[i];j++){
				sum=sum*10+s[j]-'0';
				}
			if(sum<0||sum>255) return 0;
			sum=0;
			continue;
			}
		else if(i==cnt){
			int sum=0;
			for(int j=point[i]+1;j<s.size();j++){
					sum=sum*10+s[j]-'0';
				} 	
				if(sum<0||sum>65535) return 0;
			}
		}
  
		int flag=0;
		for(int i=1;i<=cnt-1;i++){
			if(s[point[i]]==':') return 0;
			else continue;
		}
                                  
		if(s[point[cnt]]=='.') return 0;
		int sum1=0,sum2=0;
                                  
		for(int i=0;i<s.size();i++){
			if(s[i]=='.') sum1++;
			else if(s[i]==':') sum2++;
		}
  
		if(sum1==3&&sum2==1) return 1;
		else return 0;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		string a,b;
		cin>>a>>b;
		if(a=="Server"){
			if(check(b)==0) 
				{
					cout<<"ERR"<<endl;
					continue;
				}
		if(r[b]==0){
			r[b]=i;
			cout<<"OK"<<endl;
				}
		else if(r[b]!=0) cout<<"FAIL"<<endl;
			}
		else if(a=="Client"){
			if(check(b)==0) 
			{
				cout<<"ERR"<<endl;
				continue;
			}
			else if(check(b)){
					if(r[b]!=0){
						cout<<r[b]<<endl;
					}
					else if(r[b]==0) cout<<"FAIL"<<endl;
				}
			}
		}
}
2022/8/3 16:52
加载中...