75 分求调
查看原帖
75 分求调
1186526
Besheep楼主2024/10/13 13:20
#include <bits/stdc++.h>
using namespace std;
const int N=1010;
#define ll long long
#define str string
ll n,fwq=0;
str op,ad,aa;
struct server{
	str ip;
	int num;
}a[N];
bool cheak(string s){
	//判断格式
	ll d=0,m=0,dwz,mwz;
	for(int i=0;i<s.size();i++){
		if(s[i]=='.') d++,dwz=i;
		else if(s[i]==':') m++,mwz=i;
	}
	if(d!=3||m!=1||mwz<=dwz) return 0;
	//判断范围、前导0
	ll sz=0,ws=0,gs=0,dyw=0;
	for(int i=0;i<=s.size();i++){
		if(s[i]=='.'||s[i]==':'||i==s.size()){
			gs++;
			sz/=10;
			if(gs<=4){
				if(sz>255) return 0;
				if(s[dyw]=='0'&&ws>1)return 0;
			}
			else{
				if(sz>65535) return 0;
				if(s[dyw]=='0'&&ws>1)return 0;
			}
			dyw=i+1;
			sz=0,ws=0;
		}
		else{
			sz+=s[i]-'0';
			sz*=10;
			ws++;
		}
	}
	return 1;
}
int main() {
//	freopen("network.in","r",stdin);
//	freopen("network.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>op>>ad;
		if(op=="Server"){
			if(!cheak(ad)){ 
				cout<<"ERR\n";
				continue;
			}
			else{
				bool b=1;
				for(int j=1;j<=fwq;j++){
					if(a[j].ip==ad) b=0;
				}
				fwq++;
				if(b){
					cout<<"OK\n";
					a[fwq].ip=ad,a[fwq].num=i;
				}
				else {
					cout<<"FAIL\n";
				}
			}
		}
		else{
			if(!cheak(ad)){
				cout<<"ERR\n";
				continue;
			}
			else{
				bool b=0;
				for(int j=1;j<=fwq;j++) if(a[j].ip==ad)b=1,cout<<a[j].num<<"\n";
				if(!b) cout<<"FAIL\n";
			}
		}
	}
	return 0;
}
2024/10/13 13:20
加载中...