Ctrl K

Дешевле всего вперёд по очереди

Лёгкая
В очереди n + 1 человек, места пронумерованы от 0 (самое начало) до n. Вы стоите последним, на месте n. Дан массив fees длины n: человек на месте i готов поменяться с вами местами за плату fees[i]. Правила обмена такие: - с любым, кто стоит **впереди** вас, можно поменяться, заплатив ему его цену; - с любым, кто стоит **позади** вас, можно поменяться бесплатно. Для каждого места i от 0 до n - 1 найдите минимальную сумму, которую придётся заплатить, чтобы оказаться на этом месте. Верните массив из n таких сумм.
Пример 1
fees=[7, 9, 2, 6] → [7, 7, 2, 2]

До места 0 — только заплатить 7. До места 1 дешевле дойти через место 0 (7), чем платить 9. Место 2 стоит 2, и дальше назад до места 3 можно поменяться бесплатно, поэтому ответ [7, 7, 2, 2].

Пример 2
fees=[3, 5, 8] → [3, 3, 3]

Один раз заплатив 3 за место 0, вы можете бесплатно отступить на любое место позади.

Пример 3
fees=[4] → [4]

Впереди один человек, место 0 обходится в 4.

Ограничения
  • 1 ≤ n = fees.length ≤ 10⁵
  • 1 ≤ fees[i] ≤ 100
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
загружаем Python…
Вход
fees=[7, 9, 2, 6]
Ожидается
[7, 7, 2, 2]

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