社区讨论
我考场代码长这样,能得几分?
P7911[CSP-J 2021] 网络连接参与者 14已保存回复 23
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 23 条
- 当前快照
- 1 份
- 快照标识符
- @lobie3jz
- 此快照首次捕获于
- 2023/10/29 21:30 2 年前
- 此快照最后确认于
- 2023/11/04 02:41 2 年前
CPP
#include<bits/stdc++.h>
#define for1(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
set<pair<string,int> > s;
bool guifan(string s1,string s2)
{
int k[10],l=0,a1=0,a2=0,a3=0,a4=0,a5=0;
if(s2[0]=='0'&&s2[1]!='.') return 1;
for1(i,0,s2.size()-1) if(s2[i]=='.'||s2[i]==':') k[++l]=i;
if(l!=4||s2[k[1]]!='.'||s2[k[2]]!='.'||s2[k[3]]!='.'||s2[k[4]]!=':') return 1;
for1(i,1,3) if(s2[k[i]+1]=='0'&&s2[k[i]+2]!='.'&&s2[k[i]+2]!=':') return 1;
if(s2[k[l]+1]=='0'&&s2.size()!=l+2)return 1;
for1(i,0,k[1]-1) a1=a1*10+s2[i]-'0';
for1(i,k[1]+1,k[2]-1) a2=a2*10+s2[i]-'0';
for1(i,k[2]+1,k[3]-1) a3=a3*10+s2[i]-'0';
for1(i,k[3]+1,k[4]-1) a4=a4*10+s2[i]-'0';
for1(i,k[4]+1,s2.size()-1) a5=a5*10+s2[i]-'0';
if(a1>255||a2>255||a3>255||a4>255||a5>65535)return 1;
return 0;
}
int main()
{
freopen("network.in","r",stdin);
freopen("network.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n;
cin>>n;
for1(j,1,n)
{
string s1,s2;
cin>>s1>>s2;
if(guifan(s1,s2)){puts("ERR");continue;}
if(s1=="Server")
{
int f=0;
for(auto it=s.begin();it!=s.end();it++) if(it->first==s2){f=1;break;}
if(f==0) {s.insert(pair<string,int>(s2,j));puts("OK");}
else puts("FAIL");
}
else
{
int f=0;
for(auto it=s.begin();it!=s.end();it++) if(it->first==s2){f=1;cout<<it->second<<endl;break;}
if(f==0) puts("FAIL");
}
}
return 0;
}
回复
共 23 条回复,欢迎继续交流。
正在加载回复...