Вступить в клуб →
средняяpythonСортировка и бинарный поиск

Бинарный поиск по ответу: минимальная грузоподъёмность, чтобы уложиться в k рейсов

Реализуйте функцию min_capacity(weights, k).

Вход: weights — список весов посылок, целые числа больше нуля, порядок посылок менять нельзя; k — целое число рейсов, всегда не меньше 1.

Выход: целое число — минимальная грузоподъёмность, при которой все посылки можно развезти не более чем за k рейсов. За один рейс грузовик берёт посылки подряд идущие с начала оставшейся очереди, пока их суммарный вес не превышает грузоподъёмность.

Краевые случаи:

  • пустой список: вернуть 0;
  • k = 1: ответ равен сумме всех весов;
  • k не меньше числа посылок: ответ равен максимальному весу — меньше нельзя, иначе самая тяжёлая посылка не поместится никогда.

Требование по сложности: перебирать грузоподъёмность по единице нельзя — используйте двоичный поиск по диапазону возможных ответов, проверяя каждое кандидатское значение линейным проходом по списку.

Список weights изменять не нужно.

заготовка решения

def min_capacity(weights, k):
    # ваш код
    pass

🔒 Проверка ответа — для участников клуба

  • Автотесты прямо в браузере
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела