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