小样例全过,全WA玄关求条
查看原帖
小样例全过,全WA玄关求条
1283951
csxx601cjy楼主2024/9/30 15:52
#include<bits/stdc++.h>
using namespace std;
struct computer{
	string name="",num="";
	int N;
}a[1001];
int n,scnt=0,ccnt=0;
bool check(string s){
	int len=s.size(),d=0,nms[10]={};
	string k="";
	if(len>21){
		return 0;
	}
	for(int i=0;i<len;i++){
		if(s[i]>'9'||s[i]<'0'){
			k+=s[i];
		}
	}
	if(k!="...:"){
		return 0;
	}
	for(int i=0;i<len;i++){
		if(s[i]=='0'&&i<len-1&&i>0&&s[i+1]>='0'&&s[i+1]<='9'&&(s[i-1]>'9'||s[i-1]<'0')){
			return 0;
		}
		if(s[i]>='0'&&s[i]<='9'){
			nms[d]*=10;
			nms[d]+=s[i]-'0';
		}
		if(s[i]=='.'||s[i]==':'){
			d++;
		}
	}
	for(int i=0;i<4;i++){
		if(nms[i]>255){
			return 0;
		}
	}
	if(nms[4]>65535){
		return 0;
	}
	return 1;
}
map<string,computer>vis;
int main(){
	cin>>n;
	for(int j=0;j<n;j++){
		cin>>a[j].name>>a[j].num;
		if(!check(a[j].num)){
			a[j].num="";
			cout<<"ERR\n";
		}
		else if(a[j].name=="Server"){
			if(vis[a[j].num].num=="1")cout<<"FALL\n";
			else{
				vis[a[j].num].N=j+1;
				vis[a[j].num].num="1";
				cout<<"OK\n";
			}
		}
		else if(a[j].name=="Client"){
			ccnt++;
			if(vis[a[j].num].num=="1"){
				cout<<vis[a[j].num].N<<'\n';
			}
			else cout<<"FALL\n";
		}
	}
	return 0;
}
2024/9/30 15:52
加载中...