65pts求调
查看原帖
65pts求调
593635
jsd2718楼主2025/1/17 18:32
#include<bits/stdc++.h>
using namespace std;
string op,s;
map<string,int>m;
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>op>>s;
		if(op[0]=='S')
		{
			if(m[s]>0)cout<<"FAIL"<<endl;
			else
			{
				int k=0,a=0,b=0;
				long long num;
				bool flag=0;
				//check if symbol is wrong
				for(int j=0;j<s.length();j++)
				{
					if(s[j]=='.')
					{
						a++;
						if(a>3||b>0)
						{
							flag=1;
							break;
						}
					}
					else if(s[j]==':')
					{
						b++;
						if(a<3||b>1)
						{
							flag=1;
							break;
						}
					}
					else if(s[j]<'0'||s[j]>'9')
					{
						flag=1;
						break;
					}
				}
				if(flag||a<3||b<1)
				{
					cout<<"ERR"<<endl;
					continue;
				}
				//check if number is wrong
				for(int j=1;j<=5;j++)
				{
					num=-1;
					bool flagg=0;
					while(s[k]>='0'&&s[k]<='9')
					{
						if((k==0||s[k-1]<'0'||s[k-1]>'9')&&(s[k]<'1'||s[k]>'9')&&s[k+1]>='0'&&s[k+1]<='9')
						{
							flagg=1;
							break;
						}
						if(num==-1)num=0;
						num=num*10+s[k]-'0';
						if(j<=4)
						{
							if(num>255)
							{
								flag=1;
								break;
							}
						}
						else
						{
							if(num>65535)
							{
								flag=1;
								break;
							}
						}
						k++;
					}
					if(flagg||num==-1)
					{
						flag=1;
						break;
					}
					k++;
				}
				if(flag)cout<<"ERR"<<endl;
				else
				{
					cout<<"OK"<<endl;
					m[s]=i;
				}
			}
		}
		else
		{
			if(m[s]>0)cout<<m[s]<<endl;
			else
			{
				int k=0,a=0,b=0;
				long long num;
				bool flag=0;
				//check if symbol is wrong
				for(int j=0;j<s.length();j++)
				{
					if(s[j]=='.')
					{
						a++;
						if(a>3||b>0)
						{
							flag=1;
							break;
						}
					}
					else if(s[j]==':')
					{
						b++;
						if(a<3||b>1)
						{
							flag=1;
							break;
						}
					}
					else if(s[j]<'0'||s[j]>'9')
					{
						flag=1;
						break;
					}
				}
				if(flag||a<3||b<1)
				{
					cout<<"ERR"<<endl;
					continue;
				}
				//check if number is wrong
				for(int j=1;j<=5;j++)
				{
					num=-1;
					bool flagg=0;
					while(s[k]>='0'&&s[k]<='9')
					{
						if((k==0||s[k-1]<'0'||s[k-1]>'9')&&(s[k]<'1'||s[k]>'9')&&s[k+1]>='0'&&s[k+1]<='9')
						{
							cout<<"ERR"<<endl;
							flagg=1;
							break;
						}
						if(num==-1)num=0;
						num=num*10+s[k]-'0';
						if(j<=4)
						{
							if(num>255)
							{
								flag=1;
								break;
							}
						}
						else
						{
							if(num>65535)
							{
								flag=1;
								break;
							}
						}
						k++;
					}
					if(flagg||num==-1)
					{
						flag=1;
						break;
					}
					k++;
				}
				if(flag)cout<<"ERR"<<endl;
				else cout<<"FAIL"<<endl;
			}
		}
	}
	return 0;
}

P7911 [CSP-J 2021] 网络连接
WA记录
急求hack orz

2025/1/17 18:32
加载中...