70pts,求调
查看原帖
70pts,求调
1252771
Never_Lost楼主2024/10/15 19:44
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n;
map <string,ll> m;
bool zero(string s){
	if(s.size()==0){
		return 0;
	}
	if(s[0]=='0'&&s.size()!=1){
		return 0;
	}else{
		return 1;
	}
}

bool check(string s){
	ll cnt1=0,cnt2=0;
	string a[7];
	ll num[7]={0};
//	cout<<999<<endl;
	for(ll i=0;i<s.size();i++){
		if(s[i]=='.'){
			cnt1++;
			if(cnt1>3){
				return 0;
			}
		}
		if(s[i]==':'){
			cnt2++;
			if(cnt2>1||i==s.size()-1||cnt1<3){
				return 0;
			}
		}
	}
	if(cnt1!=3||cnt2!=1){
		return 0;
	}
	ll cnt=0;
	for(ll i=0;i<s.size();i++){
		if(s[i]=='.'||s[i]==':'){
			cnt++;
			continue;
		}else{
			a[cnt]+=s[i];
		}
	}
	for(ll i=0;i<cnt;i++){
		if(!zero(a[i])){
			return 0;
		}else{
			string ls=a[i];
			for(ll j=0;j<ls.size();j++){
				num[i]=num[i]*10+ls[j]-48;
			}
		}
//		cout<<num[i]<<endl;
	}
	string ls=a[4];
	for(ll j=0;j<ls.size();j++){
		num[4]=num[4]*10+ls[j]-48;
	}
//	cout<<999<<endl;
//	cout<<num[4]<<endl;
	if(num[0]<=255&&num[1]<=255&&num[2]<=255&&num[3]<=255&&num[4]<=65535){
		return 1;
	}else{
		return 0;
	}
}
int main(){
	cin>>n;
	string s;
	for(ll i=1;i<=n;i++){
		string kind;
	    cin>>kind>>s;
//		cout<<"999"<<kind<<s<<endl;
		if(!check(s)){
			printf("ERR\n");
			continue;
		}
		if(kind=="Server"){
			if(m[s]!=0){
				printf("FAIL\n");
			}else{
				printf("OK\n");
				m[s]=i;
			}
			
		}else{
			if(m[s]==0){
				printf("FAIL\n");
			}else{
				printf("%lld\n",m[s]);
			}
		}
	}
	return 0;
}
2024/10/15 19:44
加载中...