수열과 쿼리 14
시간 제한5초메모리 제한1536 MB
부분 배열마다 서로 다른 값들만 모아 정렬했을 때 k번째로 작은 값을 출력하며, 각 질의의 범위는 직전 답에 따라 정해진다.
문제
길이가 인 수열 이 주어진다. 다음 쿼리를 처리하는 프로그램을 작성하시오.
l r k: 에 나타나는 서로 다른 값을 오름차순으로 정렬했을 때 번째 값을 출력한다. 그런 값이 없으면 을 출력한다.
수열의 인덱스는 1부터 시작한다.
입력
첫째 줄에 수열의 크기 이 주어진다. ()
둘째 줄에 이 주어진다. ()
셋째 줄에 쿼리의 개수 이 주어진다. ()
넷째 줄부터 개의 줄에 쿼리를 만드는 값이 주어진다. 각 줄에는 , , , , 가 순서대로 주어진다. (, )
번째 쿼리의 와 는 직전 쿼리의 정답으로 정한다. 번째 쿼리의 정답을 이라고 하고, 이라고 한다.
이면 와 를 서로 바꾼다.
출력
각 쿼리의 정답을 입력 순서대로 한 줄에 하나씩 출력한다.