map做的,25分,来看看为啥
查看原帖
map做的,25分,来看看为啥
312121
shimao楼主2021/10/24 00:20
#include<bits/stdc++.h>
using namespace std;
map<string,int> server;
int n;
int string_to_int(string s){
	int ans=0;
	for(int i=0;i<s.size();i++)ans=ans*10+(s[i]-'0');
	return ans;
}
bool valid(string s){
	vector<int> v;
	string cur="";
	int dot=0,comma=0;
	for(int i=0;i<s.size();i++){
		if(s[i]=='.'){
			if(cur.size()>1&&cur[0]=='0')return 0;
			dot++;
			v.push_back(string_to_int(cur));
			cur="";
			continue;
		}
		if(s[i]==':'){
			if(cur.size()>1&&cur[0]=='0')return 0;
			comma++;
			v.push_back(string_to_int(cur));
			cur="";
			continue;
		}
		cur+=s[i];
	}
	if(cur.size()>1&&cur[0]=='0')return 0;
	if(cur!="")v.push_back(string_to_int(cur));
	if(v.size()!=5||dot!=3||comma!=1)return 0;
	for(int i=0;i<4;i++)
		if(v[i]<0||v[i]>255)return 0;
	if(v[4]<0||v[4]>65535)return 0;
	return 1;
}
int main()
{
	//freopen("network.in","r",stdin);
	//freopen("network.out","w",stdout);
	cin>>n;
	int id=1;
	for(int i=1;i<=n;i++){
		string type,s;cin>>type>>s;
		if(!valid(s)){
			cout<<"ERR\n";
			continue;
		}
		if(type=="Server"){
			if(!server[s]){
				cout<<"OK\n";
				server[s]=id;id++;
				continue;
			}
			else cout<<"FAIL\n";
		}
		if(type=="Client"){
			if(!server[s])cout<<"FAIL\n";
			else cout<<server[s]<<"\n";
		}
	}
	return 0;
}
2021/10/24 00:20
加载中...