XOR 쿼리
시간 제한2초메모리 제한512 MB
배열에 원소를 추가하고 마지막 k개를 삭제하는 연산과 함께, 구간에서 x와의 XOR이 최대인 값, x 이하의 개수, k번째 작은 값을 구한다.
문제
배열 는 처음에 비어 있다. 다음 다섯 가지 쿼리를 입력에 주어진 순서대로 처리하는 프로그램을 작성한다. 배열의 인덱스는 1부터 시작한다.
1 x: 의 끝에 를 추가한다.2 L R x: 의 번째 원소부터 번째 원소까지 중에서 와 xor한 값이 가장 큰 원소 를 출력한다. 서로 다른 두 값은 와 xor한 결과도 서로 다르므로 이런 는 하나로 정해진다.3 k: 의 마지막 개 원소를 제거한다.4 L R x: 의 번째 원소부터 번째 원소까지 중에서 보다 작거나 같은 원소의 개수를 출력한다.5 L R k: 의 번째 원소부터 번째 원소까지 중에서 번째로 작은 수를 출력한다. 같은 값이 여러 번 나오면 나온 횟수만큼 세어 순위를 매긴다.
입력
첫째 줄에 쿼리의 개수 ()이 주어진다.
둘째 줄부터 개의 줄에 쿼리가 한 줄에 하나씩 주어진다. 1번, 2번, 4번 쿼리의 는 을 만족한다.
각 쿼리를 실행하기 직전 의 길이를 이라고 하면, 2번, 4번, 5번 쿼리는 을 만족하고 3번 쿼리는 을 만족한다. 5번 쿼리의 는 도 만족한다.
출력
2번, 4번, 5번 쿼리의 답을 입력에 주어진 순서대로 한 줄에 하나씩 출력한다.