求调,互关,85分
查看原帖
求调,互关,85分
818730
yingshi1119楼主2023/10/16 20:50
#include<bits/stdc++.h>
using namespace std;
map<string,int> s;
bool check(string s)
{
	long long cnt=0;
	int i=0;
	while(s[i]>='0'&&s[i]<='9'&&i<s.size())
	{
		if(s[i]-'0'==0&&cnt==0)
		{
			//cout<<i<<endl;
			if(i==s.size()-1)
			{
				return true;
			}
			else if(s[i+1]>='0'&&s[i+1]<='9')
			{
				return false;
			}
			else
			{
				i++;
				continue;
			}
		}
		else{
			cnt*=10;
			cnt+=s[i]-'0';
			if(cnt>255)
			{
				//cout<<i<<endl;
				return false;
			}
		}
		i++;
	}
	if(s[i]!='.'||i==s.size()-1||s[i-1]=='.')
	{
		//cout<<i<<endl;
		return false;
	}
	i++;
	cnt=0;
	while(s[i]>='0'&&s[i]<='9'&&i<s.size())
	{
		if(s[i]-'0'==0&&cnt==0)
		{
			if(i==s.size()-1)
			{
				return 1;
			}
			else if(s[i+1]>='0'&&s[i+1]<='9')
			{
				return false;
			}
			else
			{
				i++;
				continue;
			}
		}
		else{
			cnt*=10;
			cnt+=s[i]-'0';
			if(cnt>255)
			{
				//cout<<i<<endl;
				return false;
			}
		}
		i++;
	}
	if(s[i]!='.'||i==s.size()-1||s[i-1]=='.')
	{
		//cout<<i<<endl;
		return false;
	}
	i++;
	cnt=0;
	while(s[i]>='0'&&s[i]<='9'&&i<s.size())
	{
		if(s[i]-'0'==0&&cnt==0)
		{
			if(i==s.size()-1)
			{
				return 1;
			}
			else if(s[i+1]>='0'&&s[i+1]<='9')
			{
				return false;
			}
			else
			{
				i++;
				continue;
			}
		}
		else{
			cnt*=10;
			cnt+=s[i]-'0';
			if(cnt>255)
			{
				//cout<<i<<endl;
				return false;
			}
		}
		i++;
	}
	if(s[i]!='.'||i==s.size()-1||s[i-1]=='.')
	{
		//cout<<i<<endl;
		return false;
	}
	i++;
	cnt=0;
	while(s[i]>='0'&&s[i]<='9'&&i<s.size())
	{
		if(s[i]-'0'==0&&cnt==0)
		{
			if(i==s.size()-1)
			{
				return 1;
			}
			else if(s[i+1]>='0'&&s[i+1]<='9')
			{
				return false;
			}
			else
			{
				i++;
				continue;
			}
		}
		else{
			cnt*=10;
			cnt+=s[i]-'0';
			if(cnt>255)
			{
				//cout<<i<<endl;
				return false;
			}
		}
		i++;
	}
	if(s[i]!=':'||i==s.size()-1||s[i-1]=='.')
	{
		//cout<<i<<endl;
		return false;
	}
	i++;
	cnt=0;
	while(s[i]>='0'&&s[i]<='9'&&i<s.size())
	{
		if(s[i]-'0'==0&&cnt==0)
		{
			if(i==s.size()-1)
			{
				return 1;
			}
			else if(s[i+1]>='0'&&s[i+1]<='9')
			{
				return false;
			}
			else
			{
				i++;
				continue;
			}
		}
		else{
			cnt*=10;
			cnt+=s[i]-'0';
			if(cnt>65535)
			{
				//cout<<i<<endl;
				return false;
			}
		}
		i++;
	}
	//cout<<i<<endl;
	if(i==s.size()&&s[i-1]!=':')
	{
		
		return true;
	}
	else return false;
}
int main()
{
	//freopen("1.in","r",stdin);
	//freopen("1.out","w",stdout);
	int n;
	cin>>n;
	int p=0;
	for(int i=1;i<=n;i++)
	{
		string sx,s1;
		cin>>sx>>s1;
		if(sx=="Server")
		{
			if(check(s1)) 
			{
				if(s[s1]==0)
				{
					s[s1]=i;
					cout<<"OK"<<endl;
				}
				else
				{
					cout<<"FAIL"<<endl;
				}
			}
			else 
			{
				cout<<"ERR"<<endl;
			}
		}
		else{
			if(check(s1)&&s[s1]!=0){
				cout<<s[s1]<<endl;
			}
			else if(check(s1))
			{
				cout<<"FAIL"<<endl;
			}
			else cout<<"ERR"<<endl;
		}
	}
	return 0;
}
2023/10/16 20:50
加载中...