Ctrl K

Поделить посылки между двумя курьерами

Сложная
Есть посылки с весами weights и два курьера — первый и второй. Каждую посылку нужно отдать ровно одному из них. Распределение **годится**, если суммарный вес у каждого курьера не меньше minimum. Верните количество годных распределений. Два распределения различны, если хотя бы одна посылка досталась разным курьерам. Курьеры различимы: отдать набор первому или второму — разные распределения. Ответ может быть большим, верните его по модулю 10⁹ + 7.
Пример 1
weights=[3, 1, 2], minimum=3 → 2

Всего 6, значит каждому курьеру нужно ровно 3. Первому можно отдать {3} или {1, 2} — два способа.

Пример 2
weights=[4, 4, 4], minimum=5 → 0

Один из курьеров всегда получит одну посылку или ни одной, то есть не больше 4. Способов нет.

Пример 3
weights=[2, 2, 2, 2], minimum=3 → 6

Каждому нужно хотя бы две посылки, поэтому делим 2 на 2: первому курьеру можно выбрать любые две из четырёх — 6 способов.

Ограничения
  • 1 ≤ len(weights) ≤ 1000
  • 1 ≤ weights[i] ≤ 10⁹
  • 1 ≤ minimum ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВода между стенами СложнаяСамый большой горящий блок СложнаяПрибыль за две сделки СложнаяВсе способы расставить пробелы СложнаяПереход через пещеру Сложная
загружаем Python…
Вход
weights=[3, 1, 2], minimum=3
Ожидается
2

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 74 теста на сервере, включая скрытые.