Введение
Некоторые из вас, возможно, слышали о Гранд Отеле Гильберта . Менеджер там потерял свой список того, где находятся гости, но у него все еще есть порядок, в котором они зарегистрировались. Каждый гость не может оставаться в комнате с номером комнаты, который меньше их стоимости, и если гость добавлен к более низкому комната, все гости в более высоких комнатах без свободного места между ними и новым гостем перемещаются на одну комнату. Можете ли вы помочь ему найти, где каждый из гостей остановился?
Требования
Напишите программу, которая получает упорядоченный список натуральных чисел в качестве входных данных и помещает их в свой индекс. Если в этом индексе уже есть значение, оно перемещается к следующей записи в списке. Этот процесс повторяется до тех пор, пока не будет найдено первое пустое (0 или неопределенное) пространство. Любые неопределенные пробелы между текущим самым высоким индексом и любым новым вводом будут заполнены добавлением 0. Поскольку это Гранд-отель Гильберта, номеров, превышающих текущий самый высокий индекс занятости, не существует.
Вход и выход
На входе будет упорядоченный список натуральных чисел (разрешено читать через любую принятую форму ввода).
Каждый номер на входе считается одним гостем, прибывающим в отель, и находится в порядке прибытия
На выходе будет окончательное расположение гостей (номера)
Примеры
Вход: 1 3 1
Выход: 1 1 3
Шаг за шагом:
1
Создайте комнату с индексом 1 и поместите в нее
1 1 3 3
Создайте комнаты с индексом 3 и поместите 3 в комнату 3
1 1 3
Сдвиньте содержимое комнаты 1 вверх одна комната и место 1 в комнате 1Вход: 1 4 3 1 2 1
Выход : 1 1 2 1 3 4
Шаг за шагом:
1
Создайте комнату с индексом 1 и поместите в нее
1 1 0 0 4
Создайте комнаты с индексом 4 и поместите 4 в комнату 4
1 0 3 4
Поместите 3 в комнату 3
1 1 3 4
Поменяйте содержимое комнаты 1 на одну комнату и поместите 1 в комнату 1
1 2 1 3 4
Поменяйте содержимое комнаты 2 на 4 на одну комнату и поместите 2 в комнату 2
1 1 2 1 3 4
Поменяйте содержимое комнат с 1 по 5 на одну комнату и поместите 1 в комнату 1Вход: 10
Выход: 0 0 0 0 0 0 0 0 0 0 10
Шаг за шагом:
0 0 0 0 0 0 0 0 0 10
Создайте комнаты до комнаты 10 и поместите 10 в комнату 10Примечания:
Работа с индексированными 0 - это нормально, и в этом случае вы можете вставить 0 в начало вывода
Стандартные лазейки запрещены, выигрывает самый короткий код в байтах