비트 뒤집기와 쿼리
시간 제한4초메모리 제한1024 MB
현재 값이 구간에 속하는 모든 원소의 특정 비트를 뒤집는 갱신과 k번째로 작은 값 질의를 처리한다.
문제
이상 미만 정수 개가 주어진다. 다음 두 종류의 쿼리 개를 수행하는 프로그램을 작성하시오.
1 l r k: 개의 정수 중 이상 이하인 모든 정수의 번째 비트를 뒤집는다. 번째 비트를 뒤집는 것은 정수를 이진수로 나타냈을 때 번째 비트를 이면 로, 이면 으로 바꾸는 것이다. 가장 작은 자릿수의 비트가 번째 비트이다.2 k: 개의 정수에서 중복을 포함하여 번째로 작은 수를 구한다. 가장 작은 수가 번째로 작은 수이다.
입력
첫 번째 줄에 정수 , 가 공백으로 구분하여 주어진다.
두 번째 줄에 개의 이상 미만 정수가 공백으로 구분하여 주어진다.
세 번째 줄부터 개의 쿼리가 한 줄에 하나씩 주어진다.
출력
첫 번째 줄부터 번 쿼리가 주어질 때마다 정답을 한 줄에 하나씩 순서대로 출력한다. 번 쿼리는 적어도 한 번 이상 주어진다.