class Solution:
def shipWithinDays(self, weights: List[int], days: int) -> int:
left = max(weights)
right = sum(weights) + 1
def helper(capacity):
days = 1
acc = 0
for weight in weights:
if acc + weight > capacity:
acc = weight
days += 1
else:
acc += weight
return days
while left < right:
mid = left + (right - left) // 2
if helper(mid) <= days:
right = mid
else:
left = mid + 1
return left