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