蒟蒻求助
查看原帖
蒟蒻求助
327998
AllanPan楼主2021/6/30 20:13

这题试了一下题目中的样例是能过的,但最后还是WA了,哪位大佬能帮忙看看错在哪吗

代码如下:

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
	int n, x[100001], m[5], dif = 0 , count[5] = { 0 }, backct[5];
	// count记录每个数出现的次数
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> x[i];
	}
	sort(x + 1, x + n);
	m[1] = x[1]; m[2] = m[1] + 1; m[3] = m[2] + 1;


	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= 3; j++)
			if (x[i] == m[j])
				count[j]++;
	}

	for (int i = 1; i <= 3; i++)
		backct[i] = count[i];
	while (count[1] >= 1 && count[3] >= 1)
	{
		count[1]--;
		count[3]--;
		count[2] += 2;
	}
	// 局部调整最优化
	for (int i = 1; i <= 3; i++)
		dif += (min(backct[i], count[i]));
	cout << dif << endl;

	for (int i = 1; i <= 3; i++)
	{
		for (int j = 1; j <= count[i]; j++)
		{
			cout << m[i] << " ";
		}
	}
	return 0;
}
2021/6/30 20:13
加载中...