洛谷有题 2015普及组初赛 第28题答案错误
从别人那里找到的官方答案文件:
也可以跑一下代码
#include <iostream>
using namespace std;
const int MAXN = 1000;
int n, i, lbound, rbound, mid, m, count;
int x[MAXN];
int main()
{
cin >> n >> m;
for (i = 0; i < n; i++)
cin >> x[i];
lbound = 0;
rbound = m;
while (lbound < rbound)
{
mid = (lbound + rbound) / 2;
count = 0;
for (i = 0; i < n; i++)
if (x[i] > mid)//####有问题的地方
count++;;
if (count > n / 2)
lbound = mid + 1;
else
rbound = mid;
cout << mid << " " << lbound << " " << rbound << " " << count << endl;
}
cout << rbound << endl;
return (0);
}
测试数据:
7 7
1 2 3 4 5 6 7
如果填x[i] >= mid,那么输出为:
5 0 5 3
2 3 5 6
4 5 5 4
5
是错误的,中位数应该是4。
如果填x[i] > mid,那么输出是正确的:
3 4 7 4
5 4 5 2
4 4 4 3
4