Ctrl K

Свежие булочки для каждой компании

Сложная
Пекарня печёт булочки противнями по tray_size штук и не начинает новый противень, пока не раздаст предыдущий целиком. Сегодня придут компании покупателей: в groups[i] записано, сколько человек в i-й компании. Каждый покупатель берёт ровно одну булочку, и компанию обслуживают целиком, прежде чем перейти к следующей. Компания довольна, если первый её человек получает булочку с нового противня — то есть от предыдущих покупателей ничего не осталось. Порядок обслуживания компаний вы выбираете сами. Верните наибольшее возможное число довольных компаний.
Пример 1
tray_size=4, groups=[4, 1, 3, 2, 2] → 3

Порядок 4, 1, 3, 2, 2: группа из 4 человек забирает целый противень, после «1 + 3» снова начинается свежий противень, после «2 + 2» — тоже. Довольны группы 4, 1 и первая из двоек — всего 3.

Пример 2
tray_size=5, groups=[3, 3, 3] → 1

Свежий противень достаётся только первой группе: после неё остаётся 2 булочки, после второй — 4.

Пример 3
tray_size=1, groups=[7, 2, 5] → 3
Ограничения
  • 1 ≤ tray_size ≤ 9
  • 1 ≤ len(groups) ≤ 30
  • 1 ≤ groups[i] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамая дешёвая корзина с наборами СредняяГруппы с равными суммами СредняяКак рассчитаться за меньше переводов СложнаяДве группы с одинаковым средним СложнаяСклейка фрагментов Сложная
загружаем Python…
Вход
tray_size=4, groups=[4, 1, 3, 2, 2]
Ожидается
3

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