AcWing 3578. 最大中位数
原题链接
中等
作者:
术
,
2021-05-30 17:01:05
,
所有人可见
,
阅读 259
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N=2e5+5;
const int M=1e9+9;
int a[N];
int n,k;
bool pan(int x){
LL cnt=0;//这里也是long long
for(int i=n/2;a[i]<x&&i<n;i++){
cnt+=x-a[i];
}
if(cnt>k) return false;
return true;
}
int main()
{
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=(LL)l+r+1>>1;//需要将int转化为long long类型转化为
if(pan(mid)) l=mid;
else r=mid-1;
}
if(n==1)
cout<<a[0]+k;
else
cout<<r;
//cout << "Hello world!" << endl;
return 0;
}