65pts,但讨论区前两页所有65pts Hack都过了
查看原帖
65pts,但讨论区前两页所有65pts Hack都过了
761137
Double_Light楼主2023/9/30 10:10

rt

#include<iostream>
#include<string>
#include<map>
#define int long long
using namespace std;
int n,x,len,cnt,f;
string s,t;
map<string,int>m;
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cnt=0;f=1;x=0;
		cin>>s>>t;
		len=t.size();
		if(t[len-1]==':'||t[len-1]=='.'||t[0]==':'||t[0]=='.'){
			cout<<"ERR"<<endl;
			continue;
		}
		for(int j=0;j<len;j++){
			if(j>0&&(t[j-1]=='.'||t[j-1]==':')&&(t[j]=='.'||t[j]==':')){
				f=0;cout<<"ERR"<<endl;
				break;
			}
			if(t[j]>='0'&&t[j]<='9'){
				if(j!=0&&j!=len&&t[j]=='0'&&t[j+1]>='0'&&t[j+1]<='9'&&(t[j-1]==':'||t[j-1]=='.')){
					f=0;
					cout<<"ERR"<<endl;
					break;
				}
				x*=10,x+=t[j]-'0';
			}
			if(t[j]=='.'||t[j]==':'){
				cnt++;
				if(t[j]=='.'&&cnt>3||t[j]==':'&&cnt!=4||x>255){
					f=0;
					cout<<"ERR"<<endl;
					break;
				}
				x=0;
			}
			if(j==len-1&&x>65535){
				f=0;
				cout<<"ERR"<<endl;
				break;
			}
		}
		if(!f)continue;
		if(m[t]&&s=="Server")cout<<"FAIL"<<endl;
		if(!m[t]&&s=="Server"){
			cout<<"OK"<<endl;
			m[t]=i;
		}
		if(!m[t]&&s=="Client")cout<<"FAIL"<<endl;
		if(m[t]&&s=="Client")cout<<m[t]<<endl;
	}
	return 0;
}
2023/9/30 10:10
加载中...