萌新刚学大模拟 求助
  • 板块灌水区
  • 楼主张语诚ZYC
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/8/17 19:19
  • 上次更新2023/11/4 10:17:59
查看原帖
萌新刚学大模拟 求助
314280
张语诚ZYC楼主2021/8/17 19:19

第三个和第四个点,为什么会 WA 啊?

https://www.acwing.com/problem/content/description/3272/

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
const int MAXL=64;
int n;
char data[MAXL];
inline int read_int() {
	int s=0,w=1;
	char ch=getchar();
	while(ch<'0'||ch>'9') {
		if(ch=='-') {
			w=-1;
		}
		ch=getchar();
	}
	while(ch>='0'&&ch<='9') {
		s=s*10+ch-'0';
		ch=getchar();
	}
	return s*w;
}
struct node{
	int ip_value[4];
	int len=0;
};
node ip[MAXN];
bool cmp(node a,node b){
	if(a.ip_value[0]>b.ip_value[0]){
		return false;
	}
	if(a.ip_value[0]<b.ip_value[0]){
		return true;
	}
	if(a.ip_value[1]>b.ip_value[1]){
		return false;
	}
	if(a.ip_value[2]<b.ip_value[2]){
		return true;
	}
	if(a.ip_value[2]>b.ip_value[2]){
		return false;
	}
	if(a.ip_value[3]<b.ip_value[3]){
		return true;
	}
	if(a.ip_value[3]>b.ip_value[3]){
		return false;
	}
	if(a.ip_value[3]<b.ip_value[3]){
		return true;
	}
	if(a.len>b.len){
		return false;
	}
	if(a.len<b.len){
		return true;
	}
	return true;
}
int main(){
	n=read_int();
	if(n<=100){
		for(int i=0;i<n;i+=1){
			scanf("%s",data+1);
			data[0]='.';
			int l=strlen(data);
			bool f=false;
			int cnt=0;
			for(int j=0;j<l;j+=1){
				if(data[j]=='.'){
					sscanf(data+j+1,"%i",&ip[i].ip_value[cnt]);
					if(ip[i].ip_value[cnt]!=0){
						cnt+=1;
					}
				}
				if(data[j]=='/'){
					f=true;
					sscanf(data+j+1,"%i",&ip[i].len);
				}
			}
			if(f==false){
				ip[i].len=cnt*8;
			}
		}
		sort(ip,ip+n,cmp);
		for(int i=0;i<n;i+=1){
			printf("%i.%i.%i.%i/%i \n",ip[i].ip_value[0],ip[i].ip_value[1],ip[i].ip_value[2],ip[i].ip_value[3],ip[i].len);
		}
	}else{
		return 1;
	}
	return 0;
} 
2021/8/17 19:19
加载中...