1760. Minimum Limit of Balls in a Bag
You are given an integer array nums where the ith bag contains nums[i] balls. You are also given an integer maxOperations. You can perform the following operation at most maxOperations times: Take any bag of balls and divide it into two new bags with a positive number of balls. For example, a bag of 5 balls can become two new bags of 1 and 4 balls, or two new bags of 2 and 3 balls. Your penalty is the maximum number of balls in a bag. You want to minimize your penalty after the operations.
Return the minimum possible penalty after performing the operations.
def minimumSize(self, nums: List[int], maxOperations: int) -> int:
left, right = 1, max(nums)
while left < right:
mid = (left + right) // 2
if sum((n - 1) // mid for n in nums) > maxOperations:
left = mid + 1
else:
right = mid
return left