Ctrl K

Дешёвое выравнивание двух полок

Сложная
На двух полках стоит по n товаров, left[i] и right[i] — цены товаров на левой и правой полке. Полки нужно сделать одинаковыми: после сортировки цен по возрастанию списки должны совпасть. За одну операцию можно выбрать любой товар i с левой полки и любой товар j с правой и поменять их местами. Стоимость такой операции — min(left[i], right[j]) (цены на момент обмена). Операций можно делать сколько угодно. Верните минимальную суммарную стоимость, за которую полки становятся одинаковыми, или -1, если этого добиться нельзя.
Пример 1
left=[3, 5, 5, 1], right=[1, 3, 1, 1] → 1

Всего пятёрок 2, единиц 4, троек 2 — на каждой полке должно быть по одной пятёрке, две единицы и одна тройка. Меняем одну пятёрку слева на единицу справа: цена min(5, 1) = 1.

Пример 2
left=[4, 2], right=[2, 6] → -1

Четвёрка и шестёрка встречаются по одному разу — их нельзя поделить поровну, ответ -1.

Пример 3
left=[1, 20, 20], right=[1, 30, 30] → 2
Ограничения
  • 1 ≤ n = len(left) = len(right) ≤ 10⁵
  • 1 ≤ left[i], right[i] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый узкий отрезок для всех списков СложнаяВставки, чтобы проступил шаблон СложнаяПолка с одинаковыми краями СложнаяСамая короткая невыпавшая серия СложнаяРазвести совпадающие карточки Сложная
загружаем Python…
Вход
left=[3, 5, 5, 1], right=[1, 3, 1, 1]
Ожидается
1

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