Truy vấn XOR

Xem PDF

Nộp bài


Điểm: 15 (thành phần)
Thời gian: 1.0s
Bộ nhớ: 512M

Tác giả:
Dạng bài

Cho dãy số nguyên \(A\) độ dài \(N\). Bạn hãy lập trình xử lý \(Q\) truy vấn thuộc một trong hai loại sau:

  • 1 p x: Thực hiện gán \(A_p\leftarrow A_p\oplus x\).
  • 2 l r: Tính và in ra giá trị \(A_l\oplus A_{l+1}\oplus ... \oplus A_{r-1}\oplus A_r\).

Trong đó, \(\oplus\) biểu thị phép toán XOR bit.

Input
  • Dòng đầu chứa hai số nguyên dương \(N\) và \(Q\) \(\left(1\le N, Q\le 3\times 10^5\right)\).
  • Dòng tiếp theo chứa \(N\) số nguyên \(A_1\), \(A_2\),..., \(A_N\). \(\left(0\le A_i < 2^{30}\right)\)
  • Mỗi dòng trong \(Q\) dòng tiếp theo có dạng 1 p x hoặc 2 l r theo như mô tả ở trên. Dữ liệu đảm bảo \(1\leq p\leq N\), \(0\le x < 2^{30}\), \(1\leq l \leq r \leq N\).
Output
  • Với mỗi truy vấn dạng 2 l r, in ra một dòng mới chứa một số nguyên là giá trị \(A_l\oplus A_{l+1}\oplus ... \oplus A_{r-1}\oplus A_r\).
Ví dụ
Sample input 01
3 5
3 4 5
2 1 3
2 2 3
1 2 3
2 2 3
2 1 3
Sample output 01
2
1
2
1