1201C. Maximum Median - Codeforces Solution C++

  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!!