求调
查看原帖
求调
974911
rzt123楼主2023/10/14 11:53

只对了1、2测试点

#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<map>
using namespace std;
int n;
map<string,int> mp;
bool check(string s)
{
	int t1=0,t2=0;
	for(int i=0;i<s.size();i++)
	{
		if(s[i]=='.')
		{
			t1++;
			
			if(t1>3)
			{
			//	cout<<1<<endl;
				return false;
			}
			if(t2>0)
			{
				//cout<<2<<endl;
				return false;
			}
			
		}
		else if(s[i]==':')
		{
			t2++;
			if(t1!=3)
			{
				//cout<<3<<endl;
				return false;
			}
			if(t2>1)
			{
				//cout<<4<<endl;
				return false;
			}
		}
		else if('0'<=s[i]&&s[i]<='9')
		{
			if(s[i]=='0'&&(!('0'<=s[i+1]&&s[i+1]<='9')))
			{
				//cout<<5<<endl;
				return false;
			}
			int t=s[i]-'0';
			while('0'<=s[i+1]&&s[i+1]<='9')
			{
				i++;
				t=t*10+s[i]-'0';
				
			}
			if(t2==1&&t1==3)
			{
				if(t>65535)
				{
					//cout<<6<<endl;
					return false;
				}
			}
			else if(t2==0&&t1<=3)
			{
				if(t>255)
				{
//					cout<<i<<" ";
//					cout<<t2<<" "<<t1<<" ";
//					cout<<t<<" "<<7<<endl;
					return false;
				}
			}
			else
			{
				//cout<<8<<endl;
				return false;
			}
		}
		else
		{
			//cout<<9<<endl;
			return false;
		}
	}
	return true;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		string a,b;
		cin>>a>>b;
		if(a=="Server")
		{
			if(check(b))
			{
				if(mp[b]==0)
				{
					mp[b]=i;
					cout<<"OK"<<endl;
				}
				else
				{
					cout<<"FAIL"<<endl;
				}
			}
			else
			{
				cout<<"ERR"<<endl;
			}
		}
		if(a=="Client")
		{
			if(check(b)) 
			{
				if(mp[b]==0)
				{
					cout<<"FAIL"<<endl;
				}
				else
				{
					cout<<mp[b]<<endl;
				}
			}
			else
			{
				cout<<"ERR"<<endl;
			}
		}
	}
    return 0;
}


2023/10/14 11:53
加载中...