75pts求助...
查看原帖
75pts求助...
348511
原子げんし楼主2021/10/31 21:26
/*
	Name:
	Copyright: s26
	Author: s26
	Date:31/10/21 13:21
*/

#define taskname ""
//#define LOCAL
#ifdef taskname
#include<bits/stdc++.h>
#define endl "\n"

using namespace std;

map <string,int> computer;

bool work(string s,int l,int r,int lim) {
	if(l>r) return 0;
	l++; r--;
	if(r-l+1>=6) return 0;
	if(s[l]=='0'&&l!=r) return 0;
	long long ret=0,p=1;
	for(int i=r;i>=l&&ret<=lim;i--) ret+=p*(s[i]-'0'),p*=10;
	return ret<=lim&&ret>=0;
}

void run(int cnt) {
	string type,s; cin>>type>>s;
	if(!isdigit(s.back())) {
		puts("ERR"); return;
	}
	vector <int> pos; pos.push_back(-1); 
	for(int i=0;i<s.size();i++) if(!isdigit(s[i])) pos.push_back(i);
	if(pos.size()!=5) {
		puts("ERR"); return;
	}
	if(s[pos[1]]!='.'||s[pos[2]]!='.'||s[pos[3]]!='.'||s[pos[4]]!=':') {
		puts("ERR"); return;
	}
	pos.push_back(s.size());
	bool ok=work(s,pos[4],pos[5],65535);
	for(int i=0;i<4;i++) ok&=work(s,pos[i],pos[i+1],255);
	if(!ok) {
		puts("ERR"); return;
	}
	if(type=="Server") {
		if(computer[s]) {
			puts("FAIL"); return;
		}
		puts("OK"); computer[s]=cnt;
	} else {
		if(!computer[s]) {
			puts("FAIL"); return;
		}
		cout<<computer[s]<<endl;
	} 
}

int main(int argc,char **argv) {
	#ifdef LOCAL
		(freopen(taskname".in","r",stdin));
		(freopen(taskname".out","w",stdout));
	#endif
	int T; cin>>T;
	int i=1;
	while(T--) {
		run(i);
		i++;
	}
}
#endif


2021/10/31 21:26
加载中...