70分剩下WA,求调
查看原帖
70分剩下WA,求调
694647
zwxadz楼主2023/9/25 20:41

70分代码

#include<bits/stdc++.h>
using namespace std;
int n;
map<string,int> mp;
bool judge(string a)//判断是否合法
{
	long long l=a.length();
	long long ds=0,k=0,flag=0;//ds记录点的个数
	int i;
	for(i=0;i<l;i++)
	{
		if(a[i]=='.')
		{
			if(a[i-1]=='.')return 0;
			flag=0;
			ds++;
			if(k>255)return 0;
			k=0;
		}
		else if(a[i]==':')//当到冒号的时候退出循环
		{
			flag=0;
			if(k>255)return 0;
			k=0;
			break;
		}
		else if(a[i]>='0' && a[i]<='9')
		{
			if(a[i]=='0' && k==0)flag=1;//flag=1时,如果还有数字,则存在前导零
			else if(flag)return 0;//有前导零就退出
			k=k*10+a[i]-'0';
		}
		else
		{
			return 0;
		}
	}
	flag=0;
	if(a[i]!=':')return 0;
	if(ds!=3)return 0;
	i++;
	if(i>=l)return 0;
	for(;i<l;i++)
	{
		if('0'<=a[i] && a[i]<='9')
		{
			if(a[i]=='0' && k==0)flag=1;
			else if(flag) return 0;
			k=k*10+a[i]-'0';
		}
		else
		{
			return 0;
		}
	}
	if(k>65535)return 0;
	return 1;
}
int main()
{
	//freopen("wllj.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		string x,y;
		cin>>x>>y;
		if(!judge(y))
		{
			cout<<"ERR\n";
		}
		else
		{
			if(x=="Server")
			{
				if(!mp[y])
				{
					cout<<"OK\n";
					mp[y]=i;
					continue;
				}
				else
				{
					cout<<"FAIL\n";
					continue;
				}
			}
			else
			{
				if(!mp[y])
				{
					cout<<"FAIL\n";
				}
				else
				{
					cout<<mp[y]<<"\n";
				}
			}
		}
	}
	return 0;
}
2023/9/25 20:41
加载中...