n человек с номерами от 0 до n − 1; человек i приходит в секунду arrival[i] (массив не убывает) и хочет пройти один раз: войти, если direction[i] = 0, или выйти, если direction[i] = 1.
Проход занимает ровно одну секунду, и за одну секунду через турникет проходит не больше одного человека. Пришедший может ждать сколько угодно. Если в какую-то секунду пройти хотят несколько человек, очередь решается так:
- если в предыдущую секунду турникетом никто не пользовался, первым проходит желающий выйти;
- если в предыдущую секунду кто-то входил, первым проходит желающий войти;
- если в предыдущую секунду кто-то выходил, первым проходит желающий выйти;
- среди желающих пройти в одну сторону первым идёт человек с меньшим номером.
Перед секундой 0 турникет считается простаивавшим. Верните массив, где i-й элемент — секунда, в которую проходит человек i.arrival=[0, 0, 1, 3], direction=[0, 1, 0, 0] → [1, 0, 2, 3]
В секунду 0 турникет перед этим простаивал, поэтому сначала выходит человек 1. В секунду 1 выходящих нет — проходит человек 0, в секунду 2 — человек 2, в секунду 3 — человек 3.
arrival=[0, 1, 1], direction=[0, 1, 0] → [0, 2, 1]
В секунду 0 входит человек 0. В секунду 1 ждут человек 1 (на выход) и человек 2 (на вход); в прошлую секунду входили, поэтому проходит человек 2. Человек 1 выходит в секунду 2.
arrival=[0, 2, 2], direction=[0, 0, 1] → [0, 3, 2]
В секунду 1 турникет простаивает, поэтому в секунду 2 приоритет у выхода: сначала выходит человек 2, а человек 1 входит в секунду 3.
arrival не убываетdirection[i] равно 0 или 1arrival=[0, 0, 1, 3], direction=[0, 1, 0, 0]
[1, 0, 2, 3]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 89 тестов на сервере, включая скрытые.