def hours_needed(piles: list[int], k: int) -> int: return sum(-(-p // k) for p in piles) class Solution: def minEatingSpeed(self, piles: list[int], h: int) -> int: lo, hi = 1, max(piles) while lo < hi: k = (lo + hi) // 2 if hours_needed(piles, k) <= h: hi = k else: lo = k + 1 return lo