Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Odwracane sortowanie
(odwracane-sort)
Memory limit: 32 MB
Time limit: 4.00 s

Bajtocki Urząd Sortujący zakupił właśnie w drodze przetargu ultranowoczesną maszynę sortującą. Dokładniej, to nie tyle sortującą co odwracającą spójne podciągi zadanego ciągu w czasie stałym. Na przykład jedną operacją z ciągu 1 2 3 4 5 6 można uzyskać ciąg: 1 5 4 3 2 6. Fajne, prawda?

Urzędnicy puścili wodzę fantazji i chcieliby zastosować maszynę do posortowania permutacji zbioru liczb {1, 2, …, N}. Wiadomo bowiem, że zawsze wystarczy liniowo wiele odwróceń spójnych podciągów, aby posortować dowolny ciąg – z użyciem ultramaszyny można sortować w czasie liniowym! No prawie. Trzeba jeszcze umieć powiedzieć maszynie jakie kawałki ciągu ma odwracać, co może nie być już takie łatwe.

Maszyna przyjmuje jako dane ciąg do posortowania długości N oraz ciąg N operacji. Jeśli i-ta liczba ciągu operacji jest równa Bi to w i-tej operacji nastąpi odwrócenie spójnego podciągu od i-tego do Bi-tego elementu włącznie. Elementy ciągu numerujemy kolejnymi liczbami naturalnymi od 1 do N włącznie.

Napisz program, który: wczyta permutację do posortowania, wyznaczy ciąg operacji dla maszyny sortującej i wypisze wynik na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajduje się jedna liczba naturalna N, określająca długość permutacji do posortowania. W drugim (i ostatnim) wierszu wejścia znajduje się ciąg N liczb naturalnych Ai, pooddzielanych pojedynczymi odstępami – elementy ciągu.

Wyjście

Twój program powinien wypisać na wyjście N liczb całkowitych, pooddzielanych pojedynczymi odstępami. i-ta liczba (Bi) powinna określać, że i-tą operacją sortowania powinno być odwrócenie spójnego podciągu od i-tego elementu do Bi-tego (włącznie).

Ograniczenia

1 ≤ N ≤ 300 000.

Przykład

Input Output
7
5 2 6 7 4 1 3
6 5 7 5 5 7 7