样例全过,0分求调
查看原帖
样例全过,0分求调
1276571
jiang_yitao楼主2024/11/19 19:23
#include <bits/stdc++.h>
using namespace std;
long long n;
struct node{
	string what;
	string a;
	bool can;
}sc[10005];
bool iferr(node x){
	long long cnt=0,l=x.a.size();
	for (long long i=0;i<=l;i++) {
		long long o=0;
		if ((x.a[i]=='0' && x.a[i+1]>='0' && x.a[i+1]<='9') || x.a[i]<'0' || x.a[i]>'9') return 0;
		while (x.a[i]>='0' && x.a[i]<='9') {
			o=o*10+(x.a[i]-'0');
			i++;
		}
		if (cnt<3 && (o<0 || o>225 || x.a[i]!='.')) return 0; 
		if (cnt==3 && (o<0 || o>225 || x.a[i]!=':')) return 0;
		if (cnt==4 && (o<0 || o>65535)) return 0;
		cnt++;
	}
	return 1;
}
long long iffail(node x,long long k) {
	if (x.what[0]=='S') k=n;
	for (long long i=1;i<=k;i++) 
		if (sc[i].can==0 && x.what!=sc[i].what && sc[i].a==x.a) {
			if (sc[i].what[0]=='C') sc[i].can=1;
			return i;
		}
	return 0;
}
bool ifsame (node x,long long k) {
	for (long long i=1;i<k;i++) 
		if (x.a==sc[i].a && sc[i].what[0]=='S')
			return 1;
	return 0;
}
int main () {
	cin >> n;
	for (long long i=1;i<=n;i++) 
		cin >> sc[i].what >> sc[i].a;
	for (long long i=1;i<=n;i++) {
		if (iferr(sc[i])==0) {
			cout << "ERR" << endl;
			sc[i].can=1;
			continue;
		}
		if (iffail(sc[i],i)==0 || (sc[i].what[0]=='S' && ifsame(sc[i],i))) cout << "FAIL" << endl;
		else if (sc[i].what[0]=='S') cout << "OK" << endl;
		else cout << iffail(sc[i],i) << endl;
	}
	return 0;
}
2024/11/19 19:23
加载中...