Ctrl K

Перетасовать и подогнать

Средняя
Даны два массива одинаковой длины: current и wanted. Нужно превратить current ровно в wanted. Доступны два действия, их можно делать сколько угодно раз и в любом порядке: - **Перетасовка.** Разрезать current на любое число непрерывных кусков и сложить куски обратно в любом порядке. Каждая такая операция стоит shuffle_fee. - **Подгонка.** Прибавить к любому элементу или вычесть из него положительное целое x. Это стоит x. Верните минимальную суммарную стоимость.
Пример 1
current=[5, -1, 8], wanted=[-2, 9, 4], shuffle_fee=3 → 6

Без перестановки: 7 + 10 + 4 = 21. Переставим куски так, чтобы получилось [-1, 8, 5] (плата 3), затем подгоним: 1 + 1 + 1 = 3. Итого 6.

Пример 2
current=[1, 2], wanted=[2, 1], shuffle_fee=10 → 2

Перестановка стоит 10, а просто поправить оба числа — 1 + 1 = 2.

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

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