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