class Solution {
public:
bool canEat(vector<int>& piles , int h , int k){
long long hours = 0;
for(int pile : piles){
hours += (pile+k-1LL)/k;
}
return hours<=h;
}
int minEatingSpeed(vector<int>& piles, int h) {
int left = 1;
int right = *max_element(piles.begin() , piles.end());
int res = right;
while(left <= right){
int mid = left + (right - left)/2;
if(canEat(piles , h , mid)){
res = mid;
right = mid - 1;
}else{
left = mid+1;
}
}
return res;
}
};
https://leetcode.com/problems/koko-eating-bananas/
https://takeuforward.org/binary-search/koko-eating-bananas/