Бинарный поиск по ответу: минимальная грузоподъёмность, чтобы уложиться в k рейсов
Реализуйте функцию min_capacity(weights, k).
Вход: weights — список весов посылок, целые числа больше нуля, порядок посылок менять нельзя; k — целое число рейсов, всегда не меньше 1.
Выход: целое число — минимальная грузоподъёмность, при которой все посылки можно развезти не более чем за k рейсов. За один рейс грузовик берёт посылки подряд идущие с начала оставшейся очереди, пока их суммарный вес не превышает грузоподъёмность.
Краевые случаи:
- пустой список: вернуть
0; k = 1: ответ равен сумме всех весов;kне меньше числа посылок: ответ равен максимальному весу — меньше нельзя, иначе самая тяжёлая посылка не поместится никогда.
Требование по сложности: перебирать грузоподъёмность по единице нельзя — используйте двоичный поиск по диапазону возможных ответов, проверяя каждое кандидатское значение линейным проходом по списку.
Список weights изменять не нужно.
заготовка решения
def min_capacity(weights, k):
# ваш код
pass