95pts大佬求调
查看原帖
95pts大佬求调
526470
zhuyuhao1123楼主2023/10/3 20:42
#include<bits/stdc++.h>
using namespace std;
int n;
struct node
{
	bool c;
	string s;
	bool f;
}a[1021];
int ansa[10021],ansb[10021],ansc[10021],ansd[10021],anse[10021];
int fi(string t,char pp,int u)
{
	for(int i=u;i<t.size();++i)
	if(t[i]==pp) return i;
	return -1;
}
void work(string s,int i)
{
	if(s=="Client") a[i].c=true;
	cin>>a[i].s;
	int aa,ab,ac,ad;
	aa=fi(a[i].s,'.',0);
	if(aa==-1||aa==0||aa>3)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	ab=fi(a[i].s,'.',aa+1);
	if(ab==-1||ab<aa+2)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	if(ab-aa>4)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	ac=fi(a[i].s,'.',ab+1);
	if(ac==-1||ac<ab+2)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	if(ac-ab>4)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	ad=fi(a[i].s,':',ac+1);
	if(ad==-1||ad<ac+2)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	if(a[i].s.size()-1-ad>5||ad==a[i].s.size()-1)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	if(a[i].s[0]=='0'&&aa!=1||a[i].s[aa+1]=='0'&&ab!=aa+2||a[i].s[ab+1]=='0'&&ac!=ab+2||a[i].s[ac+1]=='0'&&ad!=ac+2||a[i].s[ad+1]=='0'&&a[i].s.size()-1!=ad+1)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	int ans;
	ans=0;
	for(int j=0;j<=aa-1;++j)
	if(a[i].s[j]<'0'||a[i].s[j]>'9')
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	else ans=ans*10+a[i].s[j]-48;
	if(ans>255||ans<0)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	ansa[i]=ans;
	ans=0;
	for(int j=aa+1;j<=ab-1;++j)
	if(a[i].s[j]<'0'||a[i].s[j]>'9')
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	else ans=ans*10+a[i].s[j]-48;
	if(ans>255||ans<0)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	ansb[i]=ans;
	ans=0;
	for(int j=ab+1;j<=ac-1;++j)
	if(a[i].s[j]<'0'||a[i].s[j]>'9')
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	else ans=ans*10+a[i].s[j]-48;
	if(ans>255||ans<0)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	ansc[i]=ans;
	ans=0;
	for(int j=ac+1;j<=ad-1;++j)
	if(a[i].s[j]<'0'||a[i].s[j]>'9')
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	else ans=ans*10+a[i].s[j]-48;
	if(ans>255||ans<0)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	ansd[i]=ans;
	ans=0;
	for(int j=ad+1;j<a[i].s.size();++j)
	if(a[i].s[j]<'0'||a[i].s[j]>'9')
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	else ans=ans*10+a[i].s[j]-48;
	if(ans>65535||ans<0)
	{
		cout<<"ERR"<<endl;
		a[i].f=true;
		return;
	}
	anse[i]=ans;
	if(a[i].c==false)
	{
		for(int j=1;j<i;++j)
		if(a[j].f==false&&a[j].c==false&&ansa[i]==ansa[j]&&ansb[i]==ansb[j]&&ansc[i]==ansc[j]&&ansd[i]==ansd[j]&&anse[i]==anse[j])
		{
			cout<<"FAIL"<<endl;
			return;
		}
		cout<<"OK"<<endl;
	}
	else
	{
		for(int j=1;j<i;++j)
		if(a[j].f==false&&a[j].c==false&&ansa[i]==ansa[j]&&ansb[i]==ansb[j]&&ansc[i]==ansc[j]&&ansd[i]==ansd[j]&&anse[i]==anse[j])
		{
			cout<<j<<endl;
			return;
		}
		cout<<"FAIL"<<endl;
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;++i)
	{
		string s;
		cin>>s;
		work(s,i);
	}
	return 0;
}
2023/10/3 20:42
加载中...