75求调
查看原帖
75求调
1352651
SunriseLJY楼主2024/10/2 12:06

感觉该有的都有了啊

就是过不了。。。

#include<iostream>
using namespace std;

bool nm(string s, int l, int r, int tgt){
	int t=1, n=0;
	string s2="";
	for(int i=r; i>=l; i--){
		n += (s[i] - '0') * t;
		t *= 10;
	}
	for(int i=l; i<=r; i++){
		s2 += s[i];
	}
	if((s2.size() >= 2 && s2[0] == '0')) return false;
	if(n <= tgt && n >= 0) return true;
	else return false;
}

bool isAd(string s){
	int len = s.size();
	int c1=0, c2=0;
	int a1[10], a2[10];
	for(int i=0; i<len; i++){
		if(s[i]=='.'){
			c1++;
			a1[c1] = i;
		}
		else if(s[i]==':'){
			c2++;
			a2[c2] = i;
		}
	}
	if(c1 != 3 || c2 != 1 || a2[1] < a1[3]) return false;
	if(!nm(s, 0, a1[1]-1, 255)) return false;
	if(!nm(s, a1[1]+1, a1[2]-1, 255)) return false;
	if(!nm(s, a1[2]+1, a1[3]-1, 255)) return false;
	if(!nm(s, a1[3]+1, a2[1]-1, 255)) return false;
	if(!nm(s, a2[1]+1, len-1, 65535)) return false;
	return true;
}

const int N = 1010;
string op[N];
string ad[N];

int main() {
	int n;
	cin>>n;

	for(int i=0; i<n; i++) {
		cin>>op[i]>>ad[i];
	}

	for(int i=0; i<n; i++) {
		if(op[i] == "Server") {
			int f=0;
			if(isAd(ad[i])) {
				for(int j=0; j<i; j++) {
					if(op[j] == "Server" && ad[j] == ad[i]) {
						f = 1;
						break;
					}
				}
			}
			else f = 2;
			
			if(f == 0) cout<<"OK";
			else if(f == 2) cout<<"ERR";
			else cout<<"FAIL";
			cout<<"\n";
		} 
		else {
			int f=0;
			if(isAd(ad[i])){
				for(int j=0; j<i; j++) {
					if(op[j] == "Server" && ad[i] == ad[j]) {
						f = j+1;
						break;
					}
				}
			}
			else f = -1;
			if(f == -1) cout<<"ERR";
			if(f > 0) cout<<f;
			else if(f == 0)cout<<"FAIL";
			cout<<"\n";
		}
	}

	return 0;
}
2024/10/2 12:06
加载中...