文章目录
C - Median
- 题意
有一个长度为n的数组,把这个数组的中位数变成k,需要添加几个数字(这里偶数中位数是n / 2)。
- 思路
直接排序后用二分进行暴力,找出k所在的大致范围,每次暴力加一个数,更新mid。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 510;
int a[N];
int main() {
int n,k;
int ans = 0;
cin >> n >> k;
for(int i = 1;i <= n;i++) scanf("%d", &a[i]);
sort(a + 1,a + 1 + n);
int l = lower_bound(a + 1, a + n + 1,k) - a;
int r = upper_bound(a + 1, a + n + 1,k) - a;
int mid = (n + 1) / 2;
while(mid < l || mid >= r) {
ans++;
r++;
n++;
mid = (n + 1) / 2;
}
cout << ans << endl;
return 0;
}