Ctrl K

Перевозки между складами

Средняя
Есть n складов. Сейчас на складе i лежит have[i] единиц товара, а по плану должно лежать want[i]. За одну перевозку грузовик забирает ровно step единиц с одного склада и привозит их на другой: к одному элементу have прибавляется step, у другого столько же отнимается. Промежуточные значения могут быть любыми, даже отрицательными. Верните наименьшее число перевозок, после которых have совпадёт с want поэлементно, или -1, если этого добиться нельзя.
Пример 1
have=[6, 2, 5, 9], want=[2, 6, 9, 5], step=2 → 4

Склад 0 должен отдать 4 = 2 перевозки по 2, склад 3 — тоже 2 перевозки; склады 1 и 2 принимают по две. Каждая перевозка разом закрывает одну отдачу и одну приёмку, поэтому всего 4.

Пример 2
have=[5, 5], want=[4, 6], step=3 → -1

Разница в одну единицу не делится на 3 — перевозками по 3 её не закрыть.

Пример 3
have=[7, 1, 4], want=[7, 1, 4], step=0 → 0

Всё уже совпадает, перевозки не нужны.

Ограничения
  • 2 ≤ n ≤ 10⁵
  • len(have) == len(want) == n
  • 0 ≤ have[i], want[i] ≤ 10⁹
  • 0 ≤ step ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСколько гостей на конференции СредняяПодтянуть или опустить СредняяОкруглить цены до нужной суммы СредняяСредний мешок СредняяЦена тает с каждой продажей Средняя
загружаем Python…
Вход
have=[6, 2, 5, 9], want=[2, 6, 9, 5], step=2
Ожидается
4

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