75pts求救!
查看原帖
75pts求救!
1277405
Zyj6楼主2024/9/19 13:16

dalao救救我吧,所有帖子基本看完了,还是找不到。。。

#include<bits/stdc++.h>
using namespace std;
//a.b.c.d:e
//0≤a,b,c,d≤255,0≤e≤65535
long long y;
string yh,dz;
long long a1=0,a2=255,a3=65535,bz[1005][7],jq;
long long pd(string s)
{
	int z=s.size();
	int k=0;
	if(s[0]=='.'||s[0]==':'||s[z]==':'||s[z]=='.') return 1;
	for(int i=0;i<z;i++)
	{
		if(k==1&&(s[i]=='.'||s[i]==':')) return 1;
		else if(s[i]=='.'||s[i]==':') k=1;
		else k=0;
	}
	return 0;
}
long long dg()
{
	if(dz[y]=='-') return -1;
	if(dz[y]=='0'&&dz[y+1]!='.') return -1;
	long long a=0;
	for(;y<dz.size();y++)
	{
		if(dz[y]=='.')
		{
			y++;
			break;
		}
		a=a*10+(dz[y]-'0');
	}
	if(y==dz.size()) return -1;
	return a;
}
long long dg1()
{
	if(dz[y]=='-') return -1;
	if(dz[y]=='0'&&dz[y+1]!=':') return -1;
	long long a=0;
	for(;y<dz.size();y++)
	{
		if(dz[y]==':')
		{
			y++;
			break;
		}
		a=a*10+(dz[y]-'0');
	}
	if(y==dz.size()) return -1;
	return a;
}
long long ok(long long a,long long b,long long c,long long d,long long e)
{
	for(long long i=1;i<=jq;i++)
	{
		if(a==bz[i][1]&&b==bz[i][2]&&c==bz[i][3]&&d==bz[i][4]&&e==bz[i][5])
		{
			printf("FAIL\n");
			return 0;
		}
	}
	return 1;
}
int main()
{
	long long n;
	scanf("%lld",&n);
	for(long long i=1;i<=n;i++)
	{
		y=0;
		cin>>yh>>dz;
		if(yh=="Server")
		{
			if(pd(dz)) {printf("ERR\n");continue;}
			long long a=0,b=0,c=0,d=0,e=0;
			a=dg();
			b=dg();
			c=dg();
			d=dg1();
			if(dz[y]=='-'||(dz[y]=='0'&&dz[y+1]!=0)) e=-1;
			else for(;y<dz.size();y++) e=e*10+(dz[y]-'0');
			if(a>=a1&&a<=a2&&b>=a1&&b<=a2&&c>=a1&&c<=a2&&d>=a1&&d<=a2&&e>=a1&&e<=a3)
			{
				if(ok(a,b,c,d,e))
				{
					printf("OK\n");
					jq++;
					bz[jq][1]=a;
					bz[jq][2]=b;
					bz[jq][3]=c;
					bz[jq][4]=d;
					bz[jq][5]=e;
					bz[jq][6]=i;
				}
			}
			else printf("ERR\n");
		}
		else
		{
			if(pd(dz)) {printf("ERR\n");continue;}
			long long a=0,b=0,c=0,d=0,e=0;
			a=dg();
			b=dg();
			c=dg();
			d=dg1();
			if(dz[y]=='-'||(dz[y]=='0'&&dz[y+1]!=0)) e=-1;
			else for(;y<dz.size();y++) e=e*10+(dz[y]-'0');
			if(a>=a1&&a<=a2&&b>=a1&&b<=a2&&c>=a1&&c<=a2&&d>=a1&&d<=a2&&e>=a1&&e<=a3)
			{
				long long o=0;
				for(long long i=1;i<=jq;i++)
				{
					if(a==bz[i][1]&&b==bz[i][2]&&c==bz[i][3]&&d==bz[i][4]&&e==bz[i][5])
					{
						o=1;
						printf("%lld\n",bz[i][6]);
						break;
					}
				}
				if(o==0) printf("FAIL\n");
			}
			else printf("ERR\n");
		}
	}
}
2024/9/19 13:16
加载中...