SOJ ONLINE JUDGE

문제 113

XOR 다중집합

내 상태
미제출
난이도
113번 문제 난이도 보기
Platinum III
출제자
rlatjwls7882
시간 제한
3000 ms
메모리 제한
1024 MB
113번 문제 태그 보기
구현

처음에 비어 있는 음이 아닌 정수 다중집합 $S$가 있다. $\oplus$는 비트별 XOR 연산이다. 원소를 나열한 수열의 인덱스는 $0$부터 $\lvert S\rvert-1$까지이며, 중복 원소도 각각 센다. 다음 $Q$개의 명령을 순서대로 처리해 보자.

  • $0\ x$: $x$를 하나 추가한다.
  • $1\ x$: $x$를 하나 삭제한다. 없다면 무시한다.
  • $2\ x$: $x$의 개수를 구한다.
  • $3\ x$: 모든 $a\in S$에 대한 $a\oplus x$의 최솟값과 최댓값을 구한다.
  • $4\ k$: $S$를 오름차순으로 나열했을 때 인덱스 $k$의 값을 구한다.
  • $5\ x\ k$: 모든 $a\in S$에 대한 $a\oplus x$를 오름차순으로 나열했을 때 인덱스 $k$의 값을 구한다.
  • $6\ x\ t$: $a\oplus x<t$인 원소 $a$의 개수를 구한다.
  • $7\ x$: $S$의 모든 원소 $a$를 $a\oplus x$로 바꾼다.

입력

첫 번째 줄에 정수 $Q$가 주어진다. $(1 \le Q \le 200\,000)$

두 번째 줄부터 $Q$개의 줄에 걸쳐 본문에서 설명한 형식의 명령이 주어진다. 각 명령의 정수는 공백으로 구분되어 주어진다. $(0 \le x \le 2^{31}-1; 0 \le k \le 200\,000; 0 \le t \le 2^{31})$

출력

$2$번부터 $6$번 명령의 답을 명령이 주어진 순서대로 한 줄에 하나씩 출력한다. $3$번 명령의 답은 최솟값과 최댓값을 공백으로 구분하여 출력한다.

$S$가 비어 있다면 $3$번 명령은 -1 -1을 출력한다. $4$번 또는 $5$번 명령에서 인덱스 $k$의 원소가 없다면 $-1$을 출력한다.

예제 입력 1

11
0 2
0 5
0 5
2 5
3 1
4 1
6 1 4
7 3
2 1
1 6
5 0 1

예제 출력 1

2
3 4
5
1
1
6

제출

편집기에서 나가려면 Esc를 누른 뒤 Tab 또는 Shift와 Tab을 누르세요.