75分求调啊啊啊
查看原帖
75分求调啊啊啊
580571
jiayuhan2021楼主2023/10/19 16:46
#include<bits/stdc++.h>
#define MAXN 20005
using namespace std;
string s,a;
long long st[MAXN][15],top=0;
int main()
{
	//freopen("P7911_13.in","r",stdin);
	//freopen("66.out","w",stdout); 
	int n,i,j;
	scanf("%d",&n);
	for(i=1;i<=n;++i){
		cin>>a;
		cin>>s;
		long long fushu=0,f=0,t=0,b=0,qiandao=0,o=0,p=s.size();
		//ERR
		top++;
		for(j=0;j<p;++j){
			if(s[j]=='-'){
				fushu=1;
				break;
			}
			if(s[j]=='.'){
				if(f>=3||s[j-1]=='.'||s[j-1]==':'){ 
					b=1;
					break;
				} 
				if(t>255){
					b=1;
					break;
				}
				st[top][++o]=t;
				t=0,f++,qiandao=0;
			}
			else{
				if(s[j]==':'){
					if(s[j-1]=='.'||s[j-1]==':'){ 
						b=1;
						break;
					} 
					if(f!=3){
						b=1;
						break;
					}
					if(t>255){
						b=1;
						break;
					}
					st[top][++o]=t;
					t=0,f++,qiandao=0;
				}
				else{
					if(s[j]<='9'&&s[j]>='0'){
						t=t*10+(s[j]-'0');
						if((s[j]-'0')==0&&qiandao==0&&s[j+1]<='9'&&s[j+1]>='0'){
							b=1;
							break;
						}
						qiandao=1;
					}
					else{
						b=1;
						break;
					}
				}
			}
		}
		st[top][++o]=t;
		st[top][++o]=i;
		if(b==1||t>65535||fushu==1||s[p-1]==':'){
			printf("ERR\n");
			top--;
			continue;
		}
		if(a[0]=='S'){//服务机
			int chongfu=0;
			for(j=1;j<top;++j){
				if(st[j][1]==st[top][1]&&st[j][2]==st[top][2]&&st[j][3]==st[top][3]&&st[j][4]==st[top][4]&&st[j][5]==st[top][5]){
					chongfu=1;
					break;
				}
			}
			if(chongfu==1){
				top--;
				printf("FAIL\n");
			}
			else
				printf("OK\n");
		}
		else{//客户机 
			int keyi=0,shu=0;
			for(j=0;j<top;++j){
				if(st[j][1]==st[top][1]&&st[j][2]==st[top][2]&&st[j][3]==st[top][3]&&st[j][4]==st[top][4]&&st[j][5]==st[top][5]){
					keyi=1,shu=st[j][6];
					break;
				}
			}
			if(keyi==0)
				printf("FAIL\n");
			else
				printf("%d\n",shu);
			top--;
		}
	}
	return 0;
} 

2023/10/19 16:46
加载中...