Ctrl K

Цена расстановки на полке

Сложная
Библиотекарь расставляет книги на изначально пустой полке строго по возрастанию шифра. Книги приходят по одной в порядке массива codes, где codes[i] — шифр i-й книги; шифры могут повторяться. Чтобы вставить книгу на её место, приходится сдвигать соседей с одной из сторон, и библиотекарь выбирает сторону, где сдвигать меньше. Поэтому цена вставки книги с шифром x — это минимум из двух чисел: сколько книг уже на полке имеют шифр строго меньше x и сколько — строго больше x. Верните суммарную цену расстановки всех книг по модулю 10⁹ + 7.
Пример 1
codes=[4, 8, 2, 6] → 1

4 ставим на пустую полку — 0. Для 8 меньших одна, больших нет — 0. Для 2 меньших нет — 0. Для 6 меньших две (2 и 4), больших одна (8) — 1. Итого 1.

Пример 2
codes=[5, 5, 1, 9, 5, 3] → 2

Стоимости по порядку: 0, 0, 0, 0, 1 (для третьей 5 меньше одна книга, больше одна), 1 (для 3 меньше одна, больше четыре). Равные номера не считаются ни меньшими, ни большими. Итого 2.

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

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