这题试了一下题目中的样例是能过的,但最后还是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;
}