Ctrl K

Уравнять суммы на кубиках

Средняя
На столе два ряда игральных кубиков: left и right — значения на их верхних гранях (от 1 до 6). В рядах может быть разное число кубиков. За один ход можно взять любой кубик из любого ряда и повернуть его любой гранью вверх, то есть заменить его значение на любое число от 1 до 6. Верните наименьшее число ходов, после которого суммы двух рядов станут равны, или -1, если это невозможно.
Пример 1
left=[2, 2], right=[6] → 1

Суммы 4 и 6. Достаточно повернуть кубик справа гранью 4 вверх.

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

Суммы 3 и 12, разница 9. Один поворот меняет сумму не больше чем на 5, значит нужно хотя бы два: например, левую 1 превратить в 6, а одну правую 6 — в 2. Получится 8 и 8.

Пример 3
left=[1, 1, 1, 1, 1, 1, 1, 1], right=[5] → -1

Слева сумма не может стать меньше 8, а справа — больше 6. Уравнять нельзя.

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

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