求调试,求Hack数据
#include<bits/stdc++.h>
using namespace std;
int n,cnt;
char op[7];
map<string,bool>mp1;
map<string,int>mp2;
bool check(string s)
{
long long a=0,b=0,c=0,d=0,e=0,i=0;
bool ok=0;
while(s[i]>='0'&&s[i]<='9')
{
if(s[i]=='0'&&ok==0&&s[i+1]<='9'&&s[i+1]>='0')return 0;
ok=1;
a=a*10+s[i]-'0';
i++;
}
if(a>255||s[i]!='.'||(s[i+1]=='.'||s[i+1]==':')||i+1>=s.size())return 0;
i++;
ok=0;
while(s[i]>='0'&&s[i]<='9')
{
if(s[i]=='0'&&ok==0&&s[i+1]<='9'&&s[i+1]>='0')return 0;
ok=1;
b=b*10+s[i]-'0';
i++;
}
if(b>255||s[i]!='.'||(s[i+1]=='.'||s[i+1]==':')||i+1>=s.size())return 0;
i++;
ok=0;
while(s[i]>='0'&&s[i]<='9')
{
if(s[i]=='0'&&ok==0&&s[i+1]<='9'&&s[i+1]>='0')return 0;
ok=1;
c=c*10+s[i]-'0';
i++;
}
if(c>255||s[i]!='.'||(s[i+1]=='.'||s[i+1]==':')||i+1>=s.size())return 0;
i++;
ok=0;
while(s[i]>='0'&&s[i]<='9')
{
if(s[i]=='0'&&ok==0&&s[i+1]<='9'&&s[i+1]>='0')return 0;
ok=1;
d=d*10+s[i]-'0';
i++;
}
if(d>255||s[i]!=':'||(s[i+1]=='.'||s[i+1]==':')||i+1>=s.size())return 0;
i++;
ok=0;
while(s[i]>='0'&&s[i]<='9')
{
if(s[i]=='0'&&ok==0&&s[i+1]<='9'&&s[i+1]>='0')return 0;
ok=1;
e=e*10+s[i]-'0';
i++;
}
// cout<<"&&&"<<endl;
if(e>65535||s[i]=='.'||s[i]==':')return 0;
//cout<<"&&&"<<endl;
return 1;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%s",op+1);
string s;
cin>>s;
if(!check(s))puts("ERR");
else if(op[1]=='S')
{
if(!mp1[s])
{
puts("OK");
mp1[s]=1,mp2[s]=i;
}
else if(mp1[s])puts("FAIL");
}
else if(op[1]=='C')
{
if(!mp1[s])puts("FAIL");
else
printf("%d\n",mp2[s]);
}
}
return 0;
}