Ctrl K

Отцепить неисправные вагоны

Сложная
Состав описан строкой wagons из 0 и 1: wagons[i] = '1' значит, что i-й вагон неисправен, '0' — что исправен. Нужно убрать из состава все неисправные вагоны. Доступны три действия, каждое сколько угодно раз: - отцепить первый вагон состава — 1 единица времени; - отцепить последний вагон состава — 1 единица времени; - вытащить любой вагон из середины — 2 единицы времени. Верните наименьшее время, за которое можно убрать все неисправные вагоны. Пустой состав считается не содержащим неисправных вагонов.
Пример 1
wagons='0100110' → 5

Отцепить два вагона слева (2) и три справа (3) — итого 5. Вытащить три неисправных из середины стоило бы 6.

Пример 2
wagons='0001000' → 2

Единственный неисправный вагон выгоднее вытащить из середины за 2.

Пример 3
wagons='000' → 0

Неисправных вагонов нет, делать ничего не нужно.

Ограничения
  • 1 ≤ len(wagons) ≤ 2·10⁵
  • wagons[i] — '0' или '1'
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиШаблон с точкой и звёздочкой СложнаяСамый длинный сбалансированный отрезок скобок СложнаяПодходит ли строка под шаблон СложнаяПеретасовка разрезами СложнаяСколькими способами вычеркнуть Сложная
загружаем Python…
Вход
wagons='0100110'
Ожидается
5

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