#13样例过了啊,怎么还错!!!(崩溃)
查看原帖
#13样例过了啊,怎么还错!!!(崩溃)
813946
luoguzjy2022楼主2023/10/5 09:43
#include<bits/stdc++.h>
using namespace std;
map<int,bool>dabiao1;
map<int,bool>dabiao2;
map<string,int>server;
int n;
bool correct;
string s1,s2;
void db1(){
	for(int i=0;i<=255;i++){
		dabiao1[i]=1;
	}
}
void db2(){
	for(int i=0;i<=65535;i++){
		dabiao2[i]=1;
	} 
}
void check(int len){
	string a,b;
	int dian=0,mao=0;
	bool flag=0,flag1=1,flag2=1;
	for(int i=0;i<len;i++){
		if(s2[i]==':'){
			if(a.length()!=1&&a[0]=='0'){//考虑前导0 
				cout<<"ERR"<<endl;
				flag2=0;
				break;
			}
			else if(dabiao1[atoi(a.c_str())]!=1||a==" "){//考虑a是否存在 
				cout<<"ERR"<<endl;
				flag2=0;
				break;
			}
			a.clear() ; 
			flag=1;
			mao++;
		}
		else if(s2[i]=='.'){
			dian++;
			if(s2[i]==s2[i+1]){//考虑两个"."连一起 
				cout<<"ERR"<<endl;
				flag2=0;
				break;
			}
			else if(a.length()!=1&&a[0]=='0'){//考虑前导0 
				cout<<"ERR"<<endl;
				flag2=0;
				break;
			}
			else if(dabiao1[atoi(a.c_str())]!=1||a==" "){//考虑a是否存在 
				cout<<"ERR"<<endl;
				flag2=0;
				break;
			}
			a.clear() ; 
		}
		else if(flag==0){//在":"前且不为"."时,建立字符串 
			a+=s2[i];
		}
		else if(flag){//遇到":"后,则建立b字符串 
			b+=s2[i];
		}
	} 
	if((dabiao2[atoi(b.c_str())]!=1||dian!=3||mao!=1||b[0]=='0')&&flag2!=0){
		cout<<"ERR"<<endl;
	}
	else if(flag2)correct=1;
	
}
int main(){
//	freopen("network4.in","r",stdin); 
//	freopen("network4.out","w",stdout);
	cin>>n;
	db1();
	db2(); 
	for(int i=1;i<=n;i++){
		correct=0;
		cin>>s1>>s2;
		int len=s2.length();
		if(s1=="Server"){
			check(len);
			
			if(correct==1){
				if(server[s2]==0){
					server[s2]=i;
					cout<<"OK"<<endl;
			    }
			    else if(correct==1&&server[s2]!=0)cout<<"FAIL"<<endl;
			}
		}
		else{
			check(len);
			if(correct==1){
				if(server[s2]!=0)cout<<server[s2]<<endl;
				else cout<<"FAIL"<<endl;
			}	
		}
	}

//Server 64.84.208.933:56528
}
2023/10/5 09:43
加载中...