5pts求助,帮帮蒟蒻吧
原题链接:49994.[CSP-J 2021] 网络连接2025-08-04 18:58:15
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node{
int id;
bool f;
};
string op,s={};
int ct=1;
unordered_map<string,node>mps;
bool check(string &s){
int dian=0,mao=0,dianzhen=0,maozhen=0;
int n=s.size();
for(int i=0;i<n;i++){
if(s[i]=='.'&&s[i+1]>='0'&&s[i+1]<='9'&&s[i-1]>='0'&&s[i-1]<='9')dian++;
if(s[i]==':'&&s[i+1]>='0'&&s[i+1]<='9'&&s[i-1]>='0'&&s[i-1]<='9')mao++;
if(s[i]=='.')dianzhen++;
if(s[i]==':')maozhen++;
}
if(dian!=3||mao!=1||dianzhen!=3||maozhen!=1){
return false;
}
int sum=0;
for(int i=0;i<n;i++){
if(i==n-1){
sum=sum*10+(s[i]-'0');
if(sum<0||sum>65535){
return false;
}
continue;
}
if(s[i]=='.'||s[i]==':'){
if(sum<0||sum>255){
return false;
}
sum=0;
continue;
}
sum=sum*10+(s[i]-'0');
}
for(int i=0;i<n;i++){
if(s[i]=='0'&&(s[i-1]=='.'||i-1<0||s[i-1]==':')){
return false;
}
}
return true;
}
void solve1(){
s={};
cin>>s;
if(!check(s)){
cout<<"ERR\n";
return;
}
if(mps[s].f==true){
cout<<"FAIL\n";
return;
}
mps[s].f=true;
mps[s].id=ct;
cout<<"OK\n";
return;
}
void solve2(){
s={};
cin>>s;
if(!check(s)){
cout<<"ERR\n";
return;
}
if(mps[s].f==false){
cout<<"FAIL\n";
return;
}
cout<<mps[s].id<<"\n";
return;
}
signed main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>op;
if(op=="Server")solve1();
else solve2();
ct++;
}
return 0;
}
应该是check函数的问题
给个hack也好啊
这里空空如也
有帮助,赞一个