Ctrl K

Курьер возвращается домой

Средняя
Город — сетка из m строк и n столбцов кварталов; строки нумеруются сверху с нуля, столбцы — слева с нуля. Курьер стоит в квартале start = [строка, столбец], а его дом — в квартале home. За один шаг курьер переходит в соседний квартал вверх, вниз, влево или вправо, не выходя за пределы сетки. Каждый шаг платный: - шаг вверх или вниз в квартал строки r стоит row_tolls[r]; - шаг влево или вправо в квартал столбца c стоит col_tolls[c]. Здесь m = len(row_tolls), n = len(col_tolls). Верните минимальную стоимость пути курьера домой.
Пример 1
start=[0, 2], home=[2, 0], row_tolls=[9, 1, 4], col_tolls=[3, 6, 2] → 14

Два шага вниз: вход в строки 1 и 2 стоит 1 + 4. Два шага влево: вход в столбцы 1 и 0 стоит 6 + 3. Итого 14 — и любой другой порядок шагов даёт ту же сумму.

Пример 2
start=[1, 1], home=[1, 1], row_tolls=[5, 5], col_tolls=[5, 5] → 0

Курьер уже дома, платить не за что.

Пример 3
start=[3, 0], home=[0, 1], row_tolls=[2, 0, 7, 1], col_tolls=[8, 5] → 14
Ограничения
  • 1 ≤ len(row_tolls), len(col_tolls) ≤ 10⁵
  • 0 ≤ row_tolls[r], col_tolls[c] ≤ 10⁴
  • len(start) = len(home) = 2
  • 0 ≤ start[0], home[0] < len(row_tolls)
  • 0 ≤ start[1], home[1] < len(col_tolls)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДве доски и вода СредняяМеньше всего прыжков до конца СредняяДобраться до последней клетки СредняяСколько угодно сделок СредняяОткуда начать круг Средняя
загружаем Python…
Вход
start=[0, 2], home=[2, 0], row_tolls=[9, 1, 4], col_tolls=[3, 6, 2]
Ожидается
14

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