Member-only story
class Solution:
def maxLength(self, ribbons: List[int], k: int) -> int:
total = sum(ribbons)
high = total // k
low = 1
if high == 0:
return 0
while low <= high:
mid = (low + high) // 2
# try out to get k segments of length mid
segments = 0
for ribbon in ribbons:
segments += ribbon // mid
if segments >= k:
low = mid + 1
else:
high = mid - 1
return min(low, high)