为什么我在洛谷上AC了,在有道上却只有40分?!
#include<bits/stdc++.h>
using namespace std;
map<string,int> m;
int n,cnt;
bool check(string a) {
int j=0,x[10];
memset(x,0,sizeof x);
for(int i=1; i<=4; i++) {
if(a[j]>'9'||a[j]<'0')return 0;
if(a[j]=='0'&&(a[j+1]>='0'&&a[j+1]<='9'))return 0;
while((a[j]<='9'&&a[j]>='0')&&j<a.size())
x[i]=x[i]*10+(a[j]-'0'),j++;
if(x[i]>=256||(a[j]!='.'&&i<4)||(i==4&&a[j]!=':')||j>=a.size())return 0;
j++;
}
if(a[j]>'9'||a[j]<='0')return 0;
while((a[j]<='9'&&a[j]>='0')&&j<a.size())
x[5]=x[5]*10+(a[j]-'0'),j++;
if(x[5]>=65536||j!=a.size())return 0;
return 1;
}
int main() {
freopen("network.in","r",stdin);
freopen("network.out","w",stdout);
scanf("%d",&n);
for(int i=1; i<=n; i++) {
string a,b;
cin>>a>>b;
if(check(b)==0) {
printf("ERR\n");
continue;
}
if(a=="Server") {
if(m[b]!=0)printf("FAIL\n");
else printf("OK\n"),m[b]=i;
} else {
if(m[b]==0)printf("FAIL\n");
else printf("%d\n",m[b]);
}
}
return 0;
}