把数据下载后本地测试没问题,但是交上去5~21都是RE。
代码如下:
#include<bits/stdc++.h>
using namespace std;
string type;
int n,tail;
char num[102];
int ip[12];
struct save{
int ips[12];
int step;
};
save comp[10002];
bool ins(char p[])
{
int l=strlen(p);
long long s=0,c=0,c1=0;
for(int i=0;i<=l;i++)
{
if(p[i]>='0'&&p[i]<='9')
{
s=s*10+p[i]-'0';
c1++;
}else{
c++;
c1=0;
if(c<4&&(p[i]!='.')||c1>=6)
{
return false;
}else{
if((c<=4&&(s<0||s>255))||(c==5&&(s<0||s>65535)))
{
return false;
}
ip[c]=s;
}
s=0;
}
}
return true;
}
void add()
{
for(int i=1;i<tail;i++)
{
int cnt=0;
for(int j=1;j<=5;j++)
{
cnt+=(comp[i].ips[j]==ip[j]);
}
if(cnt==5)
{
cout<<"FAIL"<<endl;
return;
}
}
for(int i=1;i<=n;i++)
{
comp[tail].ips[i]=ip[i];
}
cout<<"OK"<<endl;
return;
}
void find()
{
for(int i=1;i<tail;i++)
{
int cnt=0;
for(int j=1;j<=5;j++)
{
cnt+=(comp[i].ips[j]==ip[j]);
}
if(cnt==5)
{
cout<<comp[i].step<<endl;
return;
}
}
cout<<"FAIL"<<endl;
return;
}
int main()
{
cin>>n;
tail=1;
for(int i=1;i<=n;i++)
{
cin>>type;
cin>>num;
if(!ins(num))
{
cout<<"ERR"<<endl;
continue;
}
if(type[0]=='S')
{
add();
comp[tail].step=i;
tail++;
}else{
find();
}
}
return 0;
}