65分求调
查看原帖
65分求调
735330
hloixyh楼主2023/10/15 18:51

WA了一堆QWQ。

#include<bits/stdc++.h>
using namespace std;
string op,fw;
int n;
unordered_map<string,int> v;
bool pd(string a){
	int l=a.size(),cnt1=0,cnt2=0,dd[5],tj,f;
	for(int i=0;i<l;i++){
		if(a[i]>'9'&&a[i]<'0'&&a[i]!='.'&&a[i]!=':'){
			return true;
		}
		if(a[i]=='.'){
			if(i>0){
				if(a[i]==a[i-1]){
					return true;
				}
			}
			cnt1++;
			if(cnt1>3){
				return true;
			}
			dd[cnt1]=i;
		}
		if(a[i]==':'){
			if(i>0){
				if(a[i-1]=='.'){
					return true;
				}
			}
			if(cnt1!=3){
				return true;
			}
			cnt2++;
			if(cnt2>1){
				return true;
			}
			dd[4]=i;
		} 
	}
	if(cnt2!=1||cnt1!=3){
		return true;
	}
	tj=0,f=0;
	for(int i=0;i<dd[1];i++){
		if(f==0&&a[i]=='0'&&dd[1]>1){
			return true;
		}
		tj*=10;
		tj+=a[i]-'0'; 
		f=1;
	}
	if(tj>255){
		return true;
	}
	tj=0,f=0;
	for(int i=dd[1]+1;i<dd[2];i++){
		if(f==0&&a[i]=='0'&&dd[2]-dd[1]-1>1){
			return true;
		}
		tj*=10;
		tj+=a[i]-'0'; 
		f=1;
	}
	if(tj>255){
		return true;
	}
	tj=0,f=0;
	for(int i=dd[2]+1;i<dd[3];i++){
		if(f==0&&a[i]=='0'&&dd[3]-dd[2]-1>1){
			return true;
		}
		tj*=10;
		tj+=a[i]-'0'; 
		f=1;
	}
	if(tj>255){
		return true;
	}
	tj=0,f=0;
	for(int i=dd[3]+1;i<dd[4];i++){
		if(f==0&&a[i]=='0'&&dd[4]-dd[3]-1>1){
			return true;
		}
		tj*=10;
		tj+=a[i]-'0'; 
		f=1;
	}
	if(tj>255){
		return true;
	}
	tj=0,f=0;
	for(int i=dd[4]+1;i<l;i++){
		if(f==0&&a[i]=='0'&&l-dd[4]>1){
			return true;
		}
		tj*=10;
		tj+=a[i]-'0'; 
		f=1;
	}
	if(tj>65535){
		return true;
	}
	return false;
}
int main(){
//	freopen("network.in","r",stdin);
//	freopen("network.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>op>>fw;
		if(pd(fw)){
			puts("ERR");
		}else if(op[0]=='S'){
			if(v[fw]!=0){
				puts("FAIL");
			}else{
				puts("OK");
				v[fw]=i;
			}
		}else{
			if(v[fw]!=0){
				printf("%d\n",v[fw]);
			}else{
				puts("FAIL");
			}
		}
	}
	return 0;
}

2023/10/15 18:51
加载中...