Ctrl K

Переставить походы на маршруте

Сложная
Горный маршрут записан строкой route из символов 1 (шаг вверх) и 0 (шаг вниз). Маршрут *сбалансирован*: он ни разу не опускается ниже начальной высоты и заканчивается на ней же. Иначе говоря, в любом префиксе единиц не меньше, чем нулей, а во всей строке их поровну. Непустую подстроку, которая сама по себе сбалансирована, назовём *походом*. За один ход можно взять два похода, идущих вплотную друг за другом, и поменять их местами. Ходов можно сделать сколько угодно. Верните лексикографически наибольшую строку, которую можно получить.
Пример 1
route='10110010' → '11001010'

Маршрут распадается на три соседних похода: 10, 1100 и 10. Меняем местами первые два — получаем 11001010; больше ничего улучшить нельзя.

Пример 2
route='111000101100' → '111000110010'

Маршрут состоит из походов 111000, 10 и 1100. Первый и так начинается с самого высокого подъёма, а два последних выгодно поменять местами: 111000110010.

Пример 3
route='10' → '10'
Ограничения
  • 1 ≤ len(route) ≤ 50
  • route состоит из символов 0 и 1
  • route сбалансирована
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиШаблон с точкой и звёздочкой СложнаяПодходит ли строка под шаблон СложнаяКалькулятор со скобками: плюс и минус СложнаяПереворотные числа в диапазоне СложнаяСумма прописью по-английски Сложная
загружаем Python…
Вход
route='10110010'
Ожидается
'11001010'

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