Олимпиадный тренинг

Задача . Места в ряду


Задача

Темы:
В зале есть ряд из n мест, пронумерованных числами от 1 до n слева направо. Пройти к любому месту можно либо с левого конца ряда, либо с правого. Первоначально некоторые места уже заняты и ещё k человек по одному садятся на свободные места. Каждый человек выбирает себе свободное место, до которого ближе всего идти от одного из концов ряда. Если же есть два свободных места, одинаково удалённых от левого и правого концов ряда, то человек выберет левое место (с меньшим номером). Определите номера мест, которые будут выбирать люди, в порядке их прихода. Формат входных данных Первая строка входных данных содержит целое число n (1 6 n 6 2 · 105 ) — количество мест в ряду. Вторая строка содержит целое число k (1 6 k 6 n) — количество приходящих людей. Третья строка содержит строку s длины n, состоящую из символов «0» и «1» и задающую первоначальную рассадку. Занятые места обозначаются единицами, пустые — нулями. Гарантируется, что в строке s содержится не менее k нулей. Формат выходных данных Программа должна вывести k чисел — номера выбранных мест в порядке прихода новых людей.

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя