4个样例都过了,#2下载到本地也过了,但上交时全WA
代码(码风比较奇怪,勿喷):
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int res=0,f=1;char c;
for(;(c=getchar())<'0' || c>'9';c=='-'?f=-f:0);
while(c>='0' && c<='9')res=(res<<3)+(res<<1)+(c^48),c=getchar();
return res*f;
}
char op[10] = {0},code[30] = {0};
int n,t = 0,num[10],x,pos,c1,c2,tp,ttp;
struct node{
int id;
char c[30];
}server[1010];
int main(){
// freopen("P7911_2.in","r",stdin);
// freopen("network.ans","w",stdout);
n = read();
for(int ii = 1;ii<=n;ii++){
cin>>op>>code;
if(op[0]=='S'){
//判断合法
for(int i = 0;i<=10;i++)num[i] = 0;
x = 0;
tp = 0;
if(code[0]=='0'&&(code[1]>='0'&&code[1]<='9')){
cout<<"ERR\n";
continue;
}
pos = 1;
for(int i = 0;i<strlen(code);i++){
if(code[i]<'0'||code[i]>'9'){
num[pos++] = x;
x = 0;
if(code[i+1]=='0'&&(code[i+2]>='0'&&code[i+2]<='9')){
cout<<"ERR\n";
tp = 1;
break;
}
continue;
}
x = x*10+(code[i]-'0');
}
if(tp==1){
continue;
}
num[pos++] = x;
if(num[1]>=256||num[2]>=256||num[3]>=256||num[4]>=256||num[5]>=65536){
// cout<<num[1]<<" "<<num[2]<<" "<<num[3]<<" "<<num[4]<<" "<<num[5]<<"\n";
cout<<"ERR\n";
tp = 1;
}
if(tp==1){
continue;
}
c1 = 0,c2 = 0;
for(int i = 0;i<strlen(code);i++){
if(code[i]=='.')c1++;
if(code[i]==':'&&c1==3)c2++;
if(code[i]==':'&&c1!=3){
tp = 1;
break;
}
}
if(tp==1||c1!=3||c2!=1){
cout<<"ERR\n";
continue;
}
//判重
for(int i = 1;i<=t;i++){
//server[i].c
ttp = 1;
if(strlen(server[i].c)!=strlen(code))continue;
for(int j = 0;j<strlen(server[i].c);j++){
if(server[i].c[j]!=code[j]){
ttp = 0;
break;
}
}
if(ttp==1){
tp = 1;
break;
}
}
if(tp==1){
cout<<"FAIL\n";
continue;
}
//添加
server[++t].id = ii;
for(int i = 0;i<strlen(code);i++)server[t].c[i] = code[i];
cout<<"OK\n";
//
}
else if(op[0]=='C'){
//判断合法
for(int i = 0;i<=10;i++)num[i] = 0;
x = 0;
tp = 0;
if(code[0]=='0'&&(code[1]>='0'&&code[1]<='9')){
cout<<"ERR\n";
continue;
}
pos = 1;
for(int i = 0;i<strlen(code);i++){
if(code[i]<'0'||code[i]>'9'){
num[pos++] = x;
x = 0;
if(code[i+1]=='0'&&(code[i+2]>='0'&&code[i+2]<='9')){
cout<<"ERR\n";
tp = 1;
break;
}
continue;
}
x = x*10+(code[i]-'0');
}
if(tp==1){
continue;
}
num[pos++] = x;
if(num[1]>=256||num[2]>=256||num[3]>=256||num[4]>=256||num[5]>=65536){
// cout<<num[1]<<" "<<num[2]<<" "<<num[3]<<" "<<num[4]<<" "<<num[5]<<"\n";
cout<<"ERR\n";
tp = 1;
}
if(tp==1){
continue;
}
c1 = 0,c2 = 0;
for(int i = 0;i<strlen(code);i++){
if(code[i]=='.')c1++;
if(code[i]==':'&&c1==3)c2++;
if(code[i]==':'&&c1!=3){
tp = 1;
break;
}
}
if(tp==1||c1!=3||c2!=1){
cout<<"ERR\n";
continue;
}
//查找
for(int i = 1;i<=t+1;i++){
ttp = 1;
if(strlen(server[i].c)!=strlen(code))continue;
for(int j = 0;j<strlen(server[i].c);j++){
if(server[i].c[j]!=code[j]){
ttp = 0;
break;
}
}
if(ttp==1){
cout<<server[i].id<<"\n";
tp = 1;
break;
}
}
if(tp==1) continue;
//
cout<<"FAIL\n";
}
}
return 0;
}