先排序,从n/2+1项暴力向上加即可
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int i,j,k,n,m,l,a[N];
int main()
{
cin>>n>>l;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
int st=n/2+1,ans;
for(i=1;l;i++)
{
if(st+i>n)
{
ans=a[n]+l/i;
break;
}
else
{
if(l>(a[st+i]-a[st+i-1])*i)
{
l-=(a[st+i]-a[st+i-1])*i;
}
else
{
ans=a[st+i-1]+l/i;
break;
}
}
}
cout<<ans;
}