Bedao Regular Contest 14 - MINXOR

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho hai dãy số nguyên ~a_1, a_2, \ldots, a_n~ và ~b_1, b_2, \ldots, b_n~. FireGhost130104 thực hiện thao tác sau nhiều lần:

  • Chọn ra một vị trí ~i~ (~1 \le i \le n~), sau đó đổi chỗ ~2~ số ~a_i~ và ~b_i~.

Gọi ~f(a)~, ~f(b)~ lần lượt là tổng ~\text{xor}~ của các số thuộc mảng ~a~, ~b~. Hãy giúp FireGhost130104 tìm cách thực hiện các thao tác trên sao cho ~f(a) + f(b)~ đạt giá trị nhỏ nhất nhé!

Input

Dòng đầu tiên chứa số nguyên dương ~n~ (~1 \le n \le 2 \times 10^5~) — độ dài của hai dãy số ~a~ và ~b~.

Dòng tiếp theo chứa ~n~ số nguyên ~a_1, a_2, \ldots, a_n~ (~0 \le a_i \le 10^{18}~) — các phần tử của dãy ~a~.

Dòng cuối cùng chứa ~n~ số nguyên ~b_1, b_2, \ldots, b_n~ (~0 \le b_i \le 10^{18}~) — các phần tử của dãy ~b~.

Output

Một số nguyên duy nhất chứa đáp án của bài toán: giá trị nhỏ nhất của ~f(a) + f(b)~.

Scoring

  • Subtask ~1~ (~20~ điểm): ~n \le 20~

  • Subtask ~2~ (~80~ điểm): không có ràng buộc gì thêm.

Sample Input 1

3
2 3 7
4 1 5

Sample Output 1

6

Notes

Ở test ví dụ trên, ta có thể thực hiện thao tác đổi chỗ ~(a_2, b_2)~ và ~(a_3, b_3)~. Khi đó, ~a = [2, 1, 5]~ và ~b = [4, 3, 7]~, vì vậy ~f(a) + f(b) = 2 \oplus 1 \oplus 5 + 4 \oplus 3 \oplus 7 = 6 + 0 = 6~.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.