Ctrl K

Сумма минимумов отрезков

Средняя
Дан массив положительных целых чисел values. Рассмотрите все его непустые отрезки — подряд идущие куски массива. Для каждого отрезка возьмите наименьший элемент и сложите эти минимумы. Сумма может быть очень большой, поэтому верните её остаток от деления на 10⁹ + 7. Перебор всех отрезков работает за O(n²) — попробуйте найти решение за O(n).
Пример 1
values=[2, 5, 1] → 12

Отрезки: [2], [5], [1], [2, 5], [5, 1], [2, 5, 1]. Их минимумы 2, 5, 1, 2, 1, 1 — в сумме 12.

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

Отрезки [3], [3] и [3, 3], у каждого минимум 3: итого 9.

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

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