Ctrl K

Развести совпадающие карточки

Сложная
На столе лежат два ряда карточек с числами одинаковой длины n: first и second. Позиции нумеруются с нуля. За одну операцию можно поменять местами две любые карточки в ряду first; операция стоит i + j, где i и j — номера позиций этих карточек. Второй ряд трогать нельзя. Нужно добиться, чтобы на каждой позиции i выполнялось first[i] != second[i]. Верните наименьшую суммарную стоимость операций, которая для этого нужна, или -1, если это невозможно.
Пример 1
first=[3, 1, 2], second=[3, 2, 1] → 1

Совпадает только позиция 0. Меняем местами карточки 0 и 1 за 0 + 1 = 1: получается [1, 3, 2], и все позиции различаются.

Пример 2
first=[1, 1, 2], second=[1, 1, 3] → -1

На позициях 0 и 1 должно стоять что-то кроме 1, а таких карточек в первом ряду всего одна — двойка. Ничего не выйдет.

Пример 3
first=[1, 2, 3, 4], second=[1, 2, 3, 4] → 6

Совпадают все позиции. Обмен 0 и 1 стоит 1, обмен 2 и 3 стоит 5 — итого 6.

Ограничения
  • 1 ≤ n ≤ 10⁵
  • first.length = second.length = n
  • 1 ≤ first[i], second[i] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЗадания с перерывом на остывание СредняяМетки вразнобой СредняяВыбор с лимитом по тегам СредняяМеньше видов после удаления СредняяУравнять суммы на кубиках Средняя
загружаем Python…
Вход
first=[3, 1, 2], second=[3, 2, 1]
Ожидается
1

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