Ctrl K

Две доски и вода

Средняя
Вдоль прямой через равные промежутки вбиты вертикальные доски: доска с индексом i стоит в точке i и имеет высоту heights[i]. Выберите две доски — вместе с землёй они образуют резервуар. Вода в нём поднимается до высоты меньшей из двух досок, а ширина резервуара равна расстоянию между ними. Доски, стоящие между выбранными, на объём не влияют. Верните наибольшее количество воды (высота × ширина), которое можно удержать двумя досками.
Пример 1
heights=[3, 9, 2, 4, 7, 1] → 21

Берём доски с индексами 1 и 4: высота воды ограничена меньшей из них (7), расстояние 3, итого 7 · 3 = 21.

Пример 2
heights=[5, 0, 0, 5] → 15

Крайние доски высотой 5 стоят на расстоянии 3 — получается 15. Нулевые доски внутри не мешают.

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

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