0分求助,样例全对
查看原帖
0分求助,样例全对
946778
dxyshy楼主2024/10/11 20:33
#include<bits/stdc++.h>

using namespace std;

int n;
int a,b,c,d,e; 
bool KeZhiXing = true;

struct Server {
	int Id;
	int A,B,C,D,E;
}S[1010];

void Had(string ad)//将abcde读出来 
{
	int a1[6] = {0};
	int x = 1,sum = 5;
	int Dsum=0, Msum=0;
	
	for(int i = ad.size() - 1;i >= 0;i--)
	{
		if(ad[i]!='.' && ad[i]!=':')
		{
			a1[sum]+=int(ad[i]-'0')*x;
			x*=10;
		}
		else
		{
			if(ad[i+1] == '0')
			{
				KeZhiXing = false;
				return ;
			}
			if(ad[i]=='.') Dsum++;
			if(ad[i]==':') Msum++;
			x = 1;
			sum--;
		}
	}
	
	a=a1[1],b=a1[2],c=a1[3],d=a1[4],e=a1[5];
	
	//cout << Dsum << ' ' << Msum << endl;
	//printf("%d %d %d %d %d\n",a,b,c,d,e);
	
	if(Dsum!=3 || Msum!=1 ||
	   a<0 || a>255 ||
	   b<0 || b>255 ||
	   c<0 || c>255 ||
	   d<0 || d>255 ||
	   e<0 || e>65535)
	{
		KeZhiXing = false;
	}
}

void ServerH(string ad,int id)
{
	Had(ad);
	if(KeZhiXing == false)
	{
		printf("ERR\n");
		KeZhiXing = true;
	}
	else
	{
		for(int i = id;i >= 1;i--)
		{
			if(a==S[i].A && b==S[i].B && c==S[i].C && d==S[i].D && e==S[i].E)
			{
				printf("FALL\n");
				return ;
			}
		}
		S[id].Id = id;
		S[id].A=a, S[id].B=b, S[id].C=c, S[id].D=d, S[id].E=e;
		printf("OK\n");
	}
}

void ClientH(string ad,int id)
{
	Had(ad);
	if(KeZhiXing == false)
	{
		printf("ERR\n");
		KeZhiXing = true;
	}
	else
	{
		for(int i = id;i >= 1;i--)
		{
			if(a==S[i].A && b==S[i].B && c==S[i].C && d==S[i].D && e==S[i].E)
			{
				printf("%d\n",S[i].Id);
				return ;
			}
		}
		printf("FALL\n");
	}
}

void InputHandle()
{
	cin >> n;
	
	for(int i = 1;i <= n;i++)
	{
		string op, ad;
		cin >> op >> ad;
		if(op == "Server")
		{
			ServerH(ad, i);
		}
		else
		{
			ClientH(ad, i);
		}
	}
}

int main()
{
	InputHandle();
	
	return 0;
}
2024/10/11 20:33
加载中...