Ctrl K

Поглощение справа

Средняя
В ряд стоят капли воды, sizes[i] — объём i-й капли. Капля может поглотить соседку **слева**, если та не больше её самой: соседка исчезает, а объём капли становится суммой двух объёмов. Ряд при этом смыкается. Поглощения можно делать сколько угодно раз и в любом порядке (или не делать вовсе). Какой наибольший объём может оказаться у одной капли в конце? Формально: можно выбрать индекс i с sizes[i] <= sizes[i + 1], заменить sizes[i + 1] на sizes[i] + sizes[i + 1] и удалить sizes[i]. Верните максимум итогового массива при лучшей последовательности операций.
Пример 1
sizes=[4, 6, 1, 2, 8] → 21

2 ≤ 8, поэтому 8 поглощает соседа слева и становится 10. Дальше 1 ≤ 10 → 11, 6 ≤ 11 → 17, 4 ≤ 17 → 21. Остаётся одно число 21.

Пример 2
sizes=[9, 3, 2] → 9

3 > 2 и 9 > 3, так что ни одного поглощения сделать нельзя. Самое большое число — 9.

Пример 3
sizes=[7, 2, 5] → 14

5 поглощает 2 и становится 7, затем 7 ≤ 7, и правая семёрка поглощает левую: получаем 14.

Ограничения
  • 1 ≤ len(sizes) ≤ 10⁵
  • 1 ≤ sizes[i] ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДве доски и вода СредняяМеньше всего прыжков до конца СредняяДобраться до последней клетки СредняяСколько угодно сделок СредняяОткуда начать круг Средняя
загружаем Python…
Вход
sizes=[4, 6, 1, 2, 8]
Ожидается
21

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