80 求助 #13 #14 #19 #20 #21 ERR输出FAIL
查看原帖
80 求助 #13 #14 #19 #20 #21 ERR输出FAIL
288506
OutsideR_楼主2021/12/5 09:57
#include <iostream>
#include <string>
using namespace std;
int n,count1=1,count2=1,m,wjx,c1,c2;
string s,t;
bool w;
long long tmp[6],num;
struct node{
	long long a1,a2,a3,a4,a5;
	int x;
};
node sa[1005];
node ca[1005];
int f(int a,long long b){
	for(int i = 1;i<a;i++)b*=10;
	return b;
}
bool check(bool yes,string t,int ii){
	num=0;
	m=0;
	wjx=1;
	c1=0;
	c2=0;
	if(t.length()<9 || t.length()>21)return 1;
	for(int i = 0;i<=t.length();i++){
		if(t[i]=='.' || t[i]==':'){
			if(t[i]=='.'){
				c1++;
				if(c1>3)return 1;
			}
			if(t[i]==':'){
				c2++;
				if(c2>1 || (c2==1 && c1<3))return 1;
			}
			if((t[m]=='0' && t[m+1]>='0' && t[m+1]<='9') || (t[i]=='.' && t[i+1]==':') || (t[i]=='.' && t[i+1]=='.') || (t[i]==':' && t[i+1]==':') || (t[i]==':' && t[i+1]=='.') || !(t[i+1]>='0' && t[i+1]<='9'))return 1;
			num=0;
			for(int j = m;j<=i-1;j++)num+=f((i-j),t[j]-'0'); 
			if(num<0 || num>255)return 1;
			m=i+1;
			tmp[wjx]=num;
			wjx++;
		}
		if(i==t.length()){
			if(t[m]=='0' && t[m+1]>='0' && t[m+1]<='9')return 1;
			num=0;
			for(int j = m;j<=i-1;j++)num+=f((i-j),t[j]-'0'); 
			if(num<0 || num>65535)return 1;
			tmp[wjx]=num;
			wjx++;
		}
	}
	if(yes){
		sa[count1].a1=tmp[1];
		sa[count1].a2=tmp[2];
		sa[count1].a3=tmp[3];
		sa[count1].a4=tmp[4];
		sa[count1].a5=tmp[5];
		sa[count1].x=ii;
		count1++;
	}
	else{
		ca[count2].a1=tmp[1];
		ca[count2].a2=tmp[2];
		ca[count2].a3=tmp[3];
		ca[count2].a4=tmp[4];
		ca[count2].a5=tmp[5];
		ca[count2].x=ii;
		count2++;
	}
	return 0;
} 
int main(){
	cin>>n;
	for(int kk = 1;kk<=n;kk++){
		cin>>s;
		cin>>t;
		if(check((s=="Server"),t,kk)){
			cout<<"ERR"<<endl;
		}
		else{
			w=false;
			if(s=="Server"){
				for(int i = 1;i<count1-1;i++){
					if(sa[i].a1==sa[count1-1].a1&&sa[i].a2==sa[count1-1].a2&&sa[i].a3==sa[count1-1].a3&&sa[i].a4==sa[count1-1].a4&&sa[i].a5==sa[count1-1].a5){
						cout<<"FAIL"<<endl;
						w=true;
						break;
					}
				}
				if(!w){
					cout<<"OK"<<endl;
				}
			}
			else{
				for(int i = 1;i<count1;i++){
					if(sa[i].a1==ca[count2-1].a1&&sa[i].a2==ca[count2-1].a2&&sa[i].a3==ca[count2-1].a3&&sa[i].a4==ca[count2-1].a4&&sa[i].a5==ca[count2-1].a5){
						w=true;
						cout<<sa[i].x<<endl;
						break;
					}
				}
				if(!w){
					cout<<"FAIL"<<endl;
				}
			}
		}
	}
	return 0;
} 
2021/12/5 09:57
加载中...