Ctrl K

Сломанные роботы на прямой

Сложная
На числовой прямой стоят сломанные роботы и ремонтные мастерские. Массив robots хранит координаты роботов, а shops[j] = [position, capacity] означает, что мастерская стоит в точке position и может починить не больше capacity роботов. Координаты роботов попарно различны, координаты мастерских тоже; робот может стоять в той же точке, что и мастерская. Каждому роботу вы задаёте направление — влево или вправо, — и он едет в эту сторону, не останавливаясь. Когда робот оказывается в мастерской, у которой ещё есть свободные места, его чинят, и он останавливается. Заполненные мастерские роботы проезжают насквозь, а друг другу они не мешают. Верните наименьший суммарный путь, который проедут все роботы. Гарантируется, что починить можно всех.
Пример 1
robots=[1, 8], shops=[[3, 1], [7, 2]] → 3

Робот из точки 1 едет вправо до мастерской в 3 (путь 2), робот из 8 — влево до мастерской в 7 (путь 1). Всего 3.

Пример 2
robots=[0, 1, 2], shops=[[1, 2], [10, 3]] → 9

Мастерская в точке 1 примет только двоих: роботов из 0 и 1 (путь 1 + 0). Роботу из 2 придётся ехать до 10 — ещё 8. Итого 9.

Ограничения
  • 1 ≤ robots.length, shops.length ≤ 100
  • shops[j].length = 2
  • -10⁹ ≤ robots[i], position ≤ 10⁹
  • 0 ≤ capacity ≤ robots.length
  • Все роботы могут быть починены
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКоробка в коробке СложнаяСтрогий подъём из запасных чисел СложнаяСамый выгодный набор подработок СложнаяСамый длинный спуск прыжками СложнаяНаибольшее число, кратное трём Сложная
загружаем Python…
Вход
robots=[1, 8], shops=[[3, 1], [7, 2]]
Ожидается
3

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