➤ Problem Link : MAIN8_C
👉 Hint : Sort and apply binary search
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
ll arr[50000];
int n;
bool f(int mid,ll k)
{
int i;
ll cnt=0;
for(i=0;i<n;i++)
{
if(arr[i]>=mid)
{
cnt+=arr[i]/mid;
if(cnt>=k)
return true;
}
}
return false;
}
ll bin_search(ll low,ll high,ll k)
{
ll mid;
while(low<high)
{
mid = low+(high-low+1)/2;
if(f(mid,k))
low=mid;
else
high=mid-1;
}
return high;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int i;
ll sum=0;
ll k;
ll ans;
cin>>n>>k;
for(i=0;i<n;i++)
{
cin>>arr[i];
sum+=arr[i];
}
if(sum<k)
ans=0;
else
{
sort(arr,arr+n);
ll low=1;
ll high=arr[n-1];
ans = bin_search(low,high,k);
}
cout<<ans<<endl;
}
return 0;
}
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!!
