Ctrl K

График инспектора

Средняя
На стройке n объектов, пронумерованных с 1. На объекте j осталось work[j - 1] единиц работы. Каждый объект нужно сдать инспектору. Инспектор ходит по графику visits: в секунду s (от 1 до m) он стоит у объекта visits[s - 1]. В каждую секунду бригада делает ровно одно из трёх: - выполняет одну единицу работы на любом объекте; - сдаёт объект, у которого сейчас стоит инспектор, если работы на нём не осталось; - ничего не делает. Верните самую раннюю секунду, к концу которой можно сдать все объекты, или -1, если за m секунд это невозможно.
Пример 1
work=[1, 0], visits=[2, 1, 2, 1] → 3

Секунда 1: работаем на объекте 1, он готов. Секунда 2: инспектор у объекта 1 — принимает его. Секунда 3: инспектор у объекта 2, работы там не было — принимает. Ответ 3.

Пример 2
work=[2, 1], visits=[1, 2, 2, 1, 1] → 5

Нужно 3 секунды работы и 2 секунды на приёмку. Объект 2 удобно принять в секунду 3, а объект 1 — в секунду 5: всё укладывается ровно в 5 секунд.

Пример 3
work=[0, 0, 1], visits=[1, 2, 1, 2] → -1

Инспектор ни разу не приходит к объекту 3, поэтому принять всё нельзя.

Ограничения
  • 1 ≤ n = len(work) ≤ 10⁵
  • 0 ≤ work[i] ≤ 10⁹
  • 1 ≤ m = len(visits) ≤ 10⁵
  • 1 ≤ visits[i] ≤ n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПоиск в сдвинутом отсортированном массиве СредняяПервая и последняя копия СредняяПоиск в таблице-цепочке СредняяПоиск в сдвинутом массиве с повторами СредняяМинимум в сдвинутом списке Средняя
загружаем Python…
Вход
work=[1, 0], visits=[2, 1, 2, 1]
Ожидается
3

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