Ctrl K

Расстановка под популярные отрезки

Средняя
Дан массив неотрицательных чисел values и список отрезков ranges, где ranges[i] = [l, r] — индексы с l по r включительно (нумерация с нуля). Элементы values можно переставить в любом порядке. После перестановки для каждого отрезка считается сумма элементов на его позициях, а все эти суммы складываются. Верните наибольший возможный итог по модулю 10⁹ + 7.
Пример 1
values=[1, 5, 2], ranges=[[0, 1], [1, 2]] → 13

Позиция 1 входит в оба отрезка — ставим туда 5. Например, [2, 5, 1]: (2 + 5) + (5 + 1) = 13.

Пример 2
values=[4, 0, 7, 3], ranges=[[2, 2], [0, 3], [2, 3]] → 32

Позиция 2 покрыта трижды, позиция 3 — дважды, остальные — по разу. 7 · 3 + 4 · 2 + 3 + 0 = 32.

Пример 3
values=[9], ranges=[[0, 0], [0, 0]] → 18

Один и тот же отрезок спрашивают дважды: 9 + 9 = 18.

Ограничения
  • 1 ≤ len(values) ≤ 10⁵
  • 0 ≤ values[i] ≤ 10⁵
  • 1 ≤ len(ranges) ≤ 10⁵
  • ranges[i] = [l, r], 0 ≤ l ≤ r < len(values)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяПодравнять числа прибавлением СредняяВыровнять банки СредняяКовёр на окрашенные отрезки СредняяМеньше всего комнат Средняя
загружаем Python…
Вход
values=[1, 5, 2], ranges=[[0, 1], [1, 2]]
Ожидается
13

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