Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024
Problem description
Jasio bardzo lubi ładne drzewa binarne, a ostatnio poznał również co to kolejność pre-order, post-order oraz in-order. Umie już wyznaczyć kolejność pre-order oraz post-order, ale niestety kolejność in-order nadal sprawia mu trudność, podobnie jak rysowanie drzewa. Poprosił Cię zatem o pomoc. Jasio dostarczy kolejność pre-order oraz post-order jego drzewa, na podstawie tego chciałby otrzymać kolejność inorder.
Jasio uznaje drzewo binarne za pełne, jeśli każdy z jego wierzchołków ma zero lub dwóch synów. Poniższe drzewo jest pełne:
Kolejność pre-order odwiedzania wierzchołków to: najpierw węzeł, potem lewe poddrzewo, a na końcu prawe poddrzewo. Kolejność post-order odwiedzania wierzchołków to: najpierw lewe poddrzewo, potem prawe poddrzewo, a na końcu węzeł. Kolejność in-order odwiedzania wierzchołków to: najpierw lewe poddrzewo, potem węzeł, a na końcu prawe poddrzewo.
Napisz program, który wczyta kolejność pre-order, następnie post-order wymyślonego przez Jasia pełnego drzewa binarnego, obliczy kolejność in-order i wypisze ją na standardowe wyjście.
Wejście
W pierwszym wierszu standardowego wejścia znajduje się jedna nieparzysta liczba naturalna N oznaczająca liczbę wierchołków w drzewie Jasia. W drugim i w trzecim wierszu podanych jest po N liczb naturalnych poodzielanych pojedynczymi odstępami oznaczających odpowiednio kolejność preorder oraz postorder wyznaczone przez Jasia.
Wierzchołki w drzewie Jasia etykietowane są parami różnymi liczbami naturalnymi nie przekraczającymi 109.
Wyjście
Na standardowe wyjście należy wypisać N liczb naturalnych – kolejność in-order drzewa wymyślonego przez Jasia.
Ograniczenia
1 ≤ N < 300 000.
Przykład
Wejście | Wyjście | Wyjaśnienie |
|
|
Drzewo, które sobie Jasio wyobraził wygląda tak jak w przykładzie narysowanym powyżej. |