洛谷有题 2015普及组初赛 第28题答案错误
查看原帖
洛谷有题 2015普及组初赛 第28题答案错误
344358
liuqu1990717楼主2022/4/8 23:29

洛谷有题 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
2022/4/8 23:29
加载中...