➤  Problem Link : 231C. To Add or Not to Add  
✅ C++ Solution :
 
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
ll ans;
bool func(ll m, ll arr[],ll k,ll n)
{
	if(m>n)
		return 0;
	ll cnt=0;
	for(ll i=0;i<m;i++)
		cnt+=arr[m-1]-arr[i];
	if(cnt <= k)
	{
		ans = arr[m-1];
		return 1;
	}
	for(ll i=m;i<n;i++)
	{
		cnt+=(m-1)*(arr[i]-arr[i-1])-(arr[i-1]-arr[i-m]);
		if(cnt<=k)
		{
			ans=arr[i];
			return 1;
		}
	}
	return 0;
}
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);
	ll low=0,high= n+1,mid;
	ans=-1;
	while(low<high)
	{
		mid=low+(high-low+1)/2;
		if(func(mid,arr,k,n))
			low=mid;
		else
			high=mid-1;
	}
	cout<<high<<" "<<ans;
}
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!!
