社区讨论

为什么输出的形式不大一样,但是一个0分一个100分?

P10672【MX-S1-T1】 壁垒参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m1hd65wd
此快照首次捕获于
2024/09/25 12:27
去年
此快照最后确认于
2025/11/04 18:49
4 个月前
查看原帖
CPP
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 100010;
struct node 
{
	int to, id;
}tong[N];
int n, a[N], cnt;
bool cmp (node x, node y)
{
	if(x.to == y.to) return x.id < y.id;
	return x.to > y.to;
}
int main ()
{
	scanf("%d", &n);
	for(int i = 1; i <= n; i++) 
	{
		scanf("%d", &a[i]);
		if(!tong[a[i]].to) 
		{
			cnt++;
			tong[a[i]].id = a[i];
		}
		tong[a[i]].to++;
	}
	if(cnt % 2 == 1) 
	{
		printf("-1");
		return 0;
	}
	sort(tong + 1, tong + 1 + n, cmp);
	for(int i = 1; i <= cnt; i++)
	{
		while(tong[i].to-- && tong[i + 1].to--)
		{
			printf("%d %d ", tong[i].id, tong[i + 1].id);
		}
	}
	return 0;
}
这是零分的
CPP
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 100010;
struct node 
{
	int to, id = 0x3f3f3f3f;
}tong[N];
int n, a[N], cnt;
bool cmp (node x, node y)
{
	if(x.to == y.to) return x.id < y.id;
	return x.to > y.to;
}
int main ()
{
	scanf("%d", &n);
	for(int i = 1; i <= n; i++) 
	{
		scanf("%d", &a[i]);
		if(tong[a[i]].to == 0) 
		{
			cnt++;
			tong[a[i]].id = a[i];
		}
		tong[a[i]].to++;
	}
	if(cnt % 2 == 1) 
	{
		printf("-1");
		return 0;
	}
	for(int i = 1; i <= n; i++)
	{
		if(tong[i].to) printf("%d ", tong[i].id), tong[i].to--;
	}
	for(int i = 1; i <= n; i++) while(tong[i].to) printf("%d ", tong[i].id), tong[i].to--;
	return 0;
}
这是满分的
感谢大佬

回复

1 条回复,欢迎继续交流。

正在加载回复...