95pts求调,14#WA
查看原帖
95pts求调,14#WA
550190
zhuguyu楼主2024/5/1 17:42
#include<bits/stdc++.h>
using namespace std;
string k,s;
int n;
map<string,int> mp;
bool check(string s){
	int mh=0,d=0,num=0;
	bool flag=1;
	for(int i=0;i<s.size();i++){
		if(s[i]>='0'&&s[i]<='9'&&flag) num++,flag=0;
		if(s[i]=='.') d++,flag=1;
		if(s[i]==':') mh++,flag=1;
	}
	if(d==3&&num==5&&mh==1) return 1;
	else return 0;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>k>>s;		
		bool now=0,flag=1;
		int sum=0;
		if(k[0]=='S'){
			if(!check(s)){
				cout<<"ERR"<<endl;
				continue;
			}
			if(mp[s]){
				cout<<"FAIL"<<endl;
				continue;
			}
			for(int j=0;j<s.size();j++){
				if(s[j]=='0'&&s[j+1]>='0'&&s[j+1]<='9'&&sum==0){
					flag=0;
					cout<<"ERR"<<endl;
					break;
				}
				if(s[j]=='.') sum=0;
				else if(s[j]==':') now=1,sum=0;
				else sum=sum*10+s[j]-'0';
				
				if(now==0&&sum>=256||now==1&&sum>=65536){
					flag=0;
					cout<<"ERR"<<endl;
					break;
				}
			}
			if(flag){
				cout<<"OK"<<endl;
				mp[s]=i;
			}
		}	
		else{
			if(!check(s)){
				cout<<"ERR"<<endl;
				continue;
			}
			for(int j=0;j<s.size();j++){
				if(s[j]=='0'&&s[j+1]>='0'&&s[j+1]<='9'&&sum==0){
					flag=0;
					cout<<"ERR"<<endl;
					break;
				}
				if(s[j]=='.') sum=0;
				else if(s[j]==':') now=1,sum=0;
				else sum=sum*10+s[j]-'0';
				if(now==0&&sum>=256||now==1&&sum>=65536){
					flag=0;
					cout<<"ERR"<<endl;
					break;
				}
			}
			if(flag){
				if(mp[s]) cout<<mp[s]<<endl;
				else cout<<"FAIL"<<endl;
			}
		}	
	}
    return 0;
}
2024/5/1 17:42
加载中...