SOJ ONLINE JUDGE

문제 123

부분집합 XOR의 최댓값

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

길이가 $N$인 정수 배열 $A_1,A_2,\cdots,A_N$이 주어진다. $\oplus$는 비트별 XOR 연산이다.

각 질의에서 정수 $X$가 주어진다. 배열에서 서로 다른 $k$개의 인덱스 $i_1,i_2,\cdots,i_k$를 선택했을 때, 다음 값의 최댓값을 구해 보자. 아무 인덱스도 선택하지 않아도 된다.

\[ X\oplus A_{i_1}\oplus A_{i_2}\oplus\cdots\oplus A_{i_k}. \]

입력

첫 번째 줄에 테스트 케이스의 수를 의미하는 정수 $T$가 주어진다. $(1 \le T \le 1\,000)$ 각 테스트 케이스는 다음과 같이 주어진다.

첫 번째 줄에 정수 $N$과 질의의 수를 의미하는 정수 $Q$가 공백으로 구분되어 주어진다. $(0 \le N \le 200\,000; 1 \le Q \le 200\,000)$

두 번째 줄에 배열의 원소 $A_1, A_2, \cdots, A_N$이 공백으로 구분되어 주어진다. $(0 \le A_i \le 2^{63}-1)$

세 번째 줄에 각 질의의 정수 $X_1, X_2, \cdots, X_Q$가 공백으로 구분되어 주어진다. $(0 \le X_i \le 2^{63}-1)$

모든 테스트 케이스에 대한 $N+Q$의 합은 $400\,000$ 이하이다. 길이가 $0$인 배열도 빈 줄을 차지한다. 입력 마지막에 연속한 빈 줄은 생략해도 된다.

출력

각 테스트 케이스마다 질의의 답을 질의가 주어진 순서대로 공백으로 구분하여 한 줄에 출력한다.

예제 입력 1

3
0 2

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

예제 출력 1

0 9223372036854775807
6 7 7
7

제출

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