➤ Problem Link : 1201C. Maximum Median
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
bool f(int v,ll arr[],int n,int k)
{
int x=n/2;
ll val=0;
for(int i=x;i<n && arr[i]<v;i++)
{
val+=v-arr[i];
if(val>k)
return false;
}
if(val>k)
return false;
return true;
}
int main()
{
ll n,k;
cin>>n>>k;
ll arr[n];
for(int i=0;i<n;i++)
cin>>arr[i];
sort(arr,arr+n);
int x=n/2;
ll low=arr[x];
ll high=low+k+1;
ll mid;
while(low<high)
{
mid=low+(high-low+1)/2;
if(f(mid,arr,n,k))
low=mid;
else
high=mid-1;
}
cout<<high;
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
