Problem description
W tym zadaniu celem jest przygotowanie algorytmu/struktury danych do zarządzania dynamiczną permutacją: pewnym ustawieniem liczb 1, 2, …, N w ciąg.
Na początku otrzymujemy ciąg π: ciąg parami różnych liczb π[1], π[2], …, π[N] z przedziału 1 do N. Następnie, należy obsłużyć operacje/zapytania następujących typów:
- zamień π[i] oraz π[j],
- wyznacz największą wartość spośród z, π[z], π[π[z]], π[π[π[z]]], …, πk[z].
Napisz program, który wczyta początkową permutację oraz operacje i zapytania, wyznaczy odpowiedzi na wszystkie zapytania i wypisze wyniki na standardowe wyjście.
Wejście
W pierwszym wierszu wejścia znajduje się jedna liczba naturalna N, oznaczająca długość permutacji. W drugim wierszu wejścia znajduje się N parami różnych liczb naturalnych πi, pooddzielanych pojedynczymi odstępami. W trzecim wierszu wejścia znajduje się jedna liczba naturalna Q, oznaczająca liczbę operacji/zapytań. W kolejnych Q wierszach znajdują się operacje/zapytania, po jednym w wierszu. Każde zapytanie jest postaci:
swap
xi yi – dla wartości 1 ≤ xi, yi ≤ N, wykonaj zamianę π[xi] oraz π[yi],query
zi ki – dla wartości 1 ≤ zi ≤ N, podaj największą wartość ze zbioru {zi, π[zi], π[π[zi]], …, πki[zi]}.
Wyjście
Dla każdego zapytania query
, zgodnie z kolejnością na
wejściu należy wypisać odpowiedź. Odpowiedzi dla zapytań należy
wypisywać w osobnych wierszach, bez dodatkowych odstępów.
Ograniczenia
1 ≤ N ≤ 100 000, 1 ≤ Q ≤ 100 000, 1 ≤ ki ≤ N.
Przykład
Wejście | Wyjście | |
|
|