使山70pts求调
查看原帖
使山70pts求调
935638
OIer_AKIOI楼主2024/8/30 17:58

13,14,17,19,20,21 WA

都6565吗,我7070...

#include<bits/stdc++.h>
using namespace std;
map<string,int>mp;
int main(){
//	freopen("network.in","r",stdin);
//	freopen("network.out","w",stdout);
	ios::sync_with_stdio(0);
	int n,cnt=0;
	string op,ad;
	cin>>n;
	while(n--){
		cin>>op>>ad;
		cnt++;
		if(op=="Server"){
			int len=ad.size(),s=0,sum=0;
			bool flag=0,check=0;
			for(int i=0;i<len;i++){
				if(ad[i]=='.'){
					if(i==0){
						flag=1;
						break;
					}
					if(ad[i-1]=='.'||ad[i-1]==':'){
						flag=1;
						break;
					}
					sum++;
					if(sum>3){
						flag=1;
						break;
					}
					s=0;
				}
				else if(ad[i]==':'){
					if(i==0){
						flag=1;
						break;
					}
					if(check||ad[i-1]=='.'){
						flag=1;
						break;
					}
					check=1;
					s=0;
				}
				else{
					if(s==0&&i!=0){
						if(ad[i-1]=='0'){
							flag=1;
							break;
						}
					}
					s=s*10+ad[i]-'0';
					if(s>255&&!check){
						flag=1;
						break;
					}
				}
			}
			if(flag||s>65535||sum!=3||!check)cout<<"ERR"<<endl;
			else if(mp.count(ad))cout<<"FAIL"<<endl;
			else{
				cout<<"OK"<<endl;
				mp[ad]=cnt;
			}
		}
		else{
			int len=ad.size(),s=0,sum=0;
			bool flag=0,check=0;
			for(int i=0;i<len;i++){
				if(ad[i]=='.'){
					if(i==0){
						flag=1;
						break;
					}
					if(ad[i-1]=='.'||ad[i-1]==':'){
						flag=1;
						break;
					}
					sum++;
					if(sum>3){
						flag=1;
						break;
					}
					s=0;
				}
				else if(ad[i]==':'){
					if(i==0){
						flag=1;
						break;
					}
					if(check||ad[i-1]=='.'){
						flag=1;
						break;
					}
					check=1;
					s=0;
				}
				else{
					if(s==0&&i!=0){
						if(ad[i-1]=='0'){
							flag=1;
							break;
						}
					}
					s=s*10+ad[i]-'0';
					if(s>255&&!check){
						flag=1;
						break;
					}
				}
			}
			if(flag||s>65535||sum!=3||!check)cout<<"ERR"<<endl;
			else if(!mp.count(ad))cout<<"FAIL"<<endl;
			else cout<<mp[ad]<<endl;
		}
	}
	return 0;
}

大模拟,思路... 木有

2024/8/30 17:58
加载中...