Wprowadzenie
Niektórzy z was mogli słyszeć o Grand Hotelu Hilberta . Kierownik tam zgubił listę miejsc, w których przebywają goście, ale nadal ma kolejność, w której się zameldowali. Każdy gość nie może przebywać w pokoju o numerze pokoju mniejszym niż ich wartość i jeśli gość zostanie dodany do niższej pokoju, wszyscy goście w wyższych pokojach bez pustej przestrzeni między nimi a nowym gościem są przenoszeni o jeden pokój do góry. Czy możesz pomóc mu znaleźć miejsce pobytu każdego z gości?
Wymagania
Napisz program, który odbiera uporządkowaną listę liczb naturalnych jako dane wejściowe i umieszcza je pod ich indeksem. Jeśli w tym indeksie znajduje się już wartość, jest ona przenoszona do następnego wpisu na liście. Ten proces powtarza się, dopóki nie zostanie znalezione pierwsze puste (0 lub niezdefiniowane) miejsce. Wszelkie niezdefiniowane spacje między bieżącym najwyższym indeksem a wszelkimi nowymi danymi wejściowymi zostaną wypełnione przez dodanie zer. Ponieważ jest to Grand Hotel Hilberta, pokoje wyższe niż obecnie najwyższy wskaźnik zajętości nie istnieją.
Wejście i wyjście
Dane wejściowe będą uporządkowaną listą liczb naturalnych (dopuszczonych do odczytu przez dowolną zaakceptowaną formę wprowadzania)
Każda liczba w danych wejściowych jest uważana za jednego gościa przybywającego do hotelu i jest w kolejności przybycia
Wyjście będzie ostateczną aranżacją gości (liczby)
Przykłady
Wejście: 1 3 1
Wyjście: 1 1 3
Krok po kroku:
1
Utwórz pokój o indeksie 1 i umieść w nim
1 1 3 3
Utwórz pokoje do indeksu 3 i umieść 3 w pokoju 3
1 1 3
Przesuń zawartość pokoju 1 w górę jeden pokój i umieść 1 w pokoju 1Wejście: 1 4 3 1 2 1
Wyjście : 1 1 2 1 3 4
Krok po kroku:
1
Utwórz pokój o indeksie 1 i umieść w nim
1 1 0 0 4
Utwórz pokoje o indeksie 4 i umieść 4 w pokoju 4
1 0 3 4
Umieść 3 w pokoju 3
1 1 3 4
Zmień zawartość pokoju 1 w górę o jeden pokój i umieść 1 w pokoju 1
1 2 1 3 4
Zmień zawartość pokoi od 2 do 4 w górę o jeden pokój i umieść 2 w pokoju 2
1 1 2 1 3 4
Przesuń zawartość pokoi od 1 do 5 w górę o jeden pokój i umieść 1 w pokoju 1Wejście: 10
Wyjście: 0 0 0 0 0 0 0 0 0 0 10
Krok po kroku:
0 0 0 0 0 0 0 0 0 10
Utwórz pokoje do pokoju 10 i umieść 10 w pokoju 10Uwagi:
Praca z indeksem 0 jest w porządku i możesz w takim przypadku wstawić 0 z przodu wyjścia
Standardowe luki są zabronione, najkrótszy kod w bajtach wygrywa