80分求助!
查看原帖
80分求助!
238691
Leo2020楼主2022/2/19 13:53
#include<bits/stdc++.h>
using namespace std;
map<string,bool>b;
map<string,int>c;
bool check(string m){
    int sum=0,c=0,d=0;
    bool flag=true;
    int x=0,y=0;
    string tt;
    for(int i=0;i<m.size();i++){
        if(m[i]=='0'&&m[i+1]>='0'&&m[i+1]<='9'&&(m[i-1]=='.'||m[i-1]==':'||i==0)){
            flag=false;
            break;
        }
        if(m[i]=='.'||m[i]==':'){
            if(m[i]=='.'){
            	if(y>=1){
            		flag=false;
            		break;
				}
				x++;
			}
            else{
            	if(x<3){
            		flag=false;
            		break;
				}
				 y++;
			}
            if(sum<0||sum>255){
                flag=false;
                break;
            }
//            while(sum>0){
//            	tt[d]=sum%10-'0';
//            	d++;
//            	sum/=10;
//			}
//			if(c<4)
//				tt[d]='.';
//			else if(c==4)
//				tt[d]=':';
//			d++;
//			if(d==5){
//				if(tt!=m){
//					flag=false;
//					cout << tt << endl << m << endl;
//					break;
//				}
//			}
            sum=0;
        }else{
            sum*=10;
            sum+=m[i]-'0';
        }
    }
    if(sum<0||sum>65535||flag==false||x!=3||y!=1)
        return false;
    return true;
}
int main(){
    //freopen("tem3.in","r",stdin);
	//freopen("tem3.out","w",stdout);
    int a,num=0;
    cin >> a;
    for(int l=0;l<a;l++){
        string n,m;
        cin >> n >> m;
        if(check(m)==false){
            cout <<"ERR" << endl;
            continue;
        }
        if(n=="Server"){
        //if(n=="S"){
            if(b[m]==true){
                cout << "FAIL" << endl;
                continue;
            }
            b[m]=true;
            c[m]=l+1;
            cout << "OK" << endl;
        }
        //if(n=="C"){
        if(n=="Client"){
            if(b[m]==false){
                cout << "FAIL" << endl;
                continue;
            }
            cout << c[m] << endl;
        }
	}
    return 0;
}

2022/2/19 13:53
加载中...