AcWing 3578. 最大中位数
原题链接
中等
作者:
Coinisi.
,
2022-03-31 23:09:25
,
所有人可见
,
阅读 148
#include <iostream>
#include <algorithm>
#define int long long
using namespace std;
const int N = 2e5+10;
int n, k, a[N];
bool check(int mid)
{
int res = 0;
for(int i = n / 2; i < n; i ++)
if(a[i] < mid)
res = res + mid - a[i];
return res <= k;
}
signed main()
{
ios::sync_with_stdio(false);
cin >> n >> k;
for(int i = 0; i < n; i ++) cin >> a[i];
sort(a, a + n);
int l = 0, r = 2e9;
while(l < r)
{
int mid = (l + r + 1) / 2;
if(check(mid)) l = mid;
else r = mid - 1;
}
cout << r << endl;
return 0;
}