쿼리와 쿼리
시간 제한2초메모리 제한512 MB
질의마다 수열의 두 원소를 교환하고, 각 교환 뒤에 M개의 왼쪽 주머니 인덱스와 M개의 오른쪽 주머니 인덱스를 짝지어 얻어지는 범위 최댓값 중 가장 큰 값을 최소화한 값을 출력한다.
문제
겨울이 가고 날이 풀리자 택희는 겨울 옷을 세탁해 보관하고, 한참 입지 않았던 후드를 하나 꺼냈다. 옷을 입던 택희는 후드 주머니 안에 무언가 들어 있음을 알아차렸다. 놀랍게도 후드의 왼쪽 주머니와 오른쪽 주머니에는 정수가 정확히 M개씩 들어 있었다.
택희는 2018 연세대학교 교내 경진대회 문제에 사용했던 수열 하나를 꺼내 깨끗이 닦았다. 수열은 N개의 정수로 이루어져 있으며, 인덱스는 1, 2, …, N으로 매겨진다. 택희는 이 수열과 주머니에서 발견한 정수들을 이용해 ‘쿼리 놀이’를 하기로 했다.
쿼리 놀이는 아래와 같이 진행된다.
- 왼쪽 주머니에서 하나의 정수를 꺼낸다. 이 값을 L이라 한다.
- 오른쪽 주머니에서 하나의 정수를 꺼낸다. 이 값을 R이라 한다.
- L ≤ R이라면 수열의 [L, R] 구간 내에서 최댓값을 찾고, 그 값을 종이에 기록한다. L > R이라면 종이에 109을 기록한다. 그 후 사용한 L과 R은 버린다.
- 주머니가 빌 때까지 위의 작업을 반복한다.
이 놀이가 끝나고 나면 종이에는 M개의 정수가 쓰여 있을 것이다. 택희는 이 놀이를 반복하다가, 종이에 쓰인 정수 M개 중 최댓값을 최소화한다면 얼마가 될지 궁금해졌다. 그리고 기왕 궁금해하는 김에 수열의 두 원소 위치를 바꾸는 쿼리 형태로 궁금해하기로 했다. 게다가 이런 궁금증이 무려 Q번 생겨났다!
택희의 쿼리 놀이에 대한 쿼리를 효율적으로 처리해 줄 프로그램을 작성해보자.
입력
첫째 줄에 수열의 길이 N, 왼쪽 주머니와 오른쪽 주머니에 들어 있는 정수의 개수 M, 쿼리의 개수 Q가 주어진다. (1 ≤ N, M, Q ≤ 200,000)
둘째 줄에는 공백으로 구분된 수열의 원소 ai가 N개 주어진다. (-109 ≤ ai ≤ 109)
셋째 줄에는 왼쪽 주머니에 들어 있는 정수 li가 M개 주어진다. (1 ≤ li ≤ N)
넷째 줄에는 오른쪽 주머니에 들어 있는 정수 ri가 M개 주어진다. (1 ≤ ri ≤ N)
다섯째 줄부터 Q+4번째 줄까지 쿼리에 대한 정보 i j 가 주어진다. 이는 ai와 aj를 서로 바꾸겠다는 의미이다. (1 ≤ i, j ≤ N)
모든 쿼리는 누적된다.
출력
Q줄에 걸쳐, 수열 변경 직후에 대해, 놀이의 결과 정수 M개 중 최댓값의 가능한 최솟값을 출력한다.