TỔNG XOR (SXOR)

Xem dạng PDF

Gửi bài giải

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

Nguồn bài:
LMH
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho dãy số nguyên dương ~A = (a_1, a_2, \ldots, a_n)~, ta gọi tổng XOR của nó là

$$a_1 \text{ XOR } a_2 \text{ XOR } \ldots \text{ XOR } a_n$$

(XOR là phép XOR bit, trong C++ là toán tử ^).

Yêu cầu: Chọn một dãy con của ~A~ sao cho tổng XOR của dãy con này là lớn nhất.

Input
  • Dòng đầu tiên chứa số nguyên dương ~n~ ~(n \le 10^5)~.
  • Dòng thứ hai chứa ~n~ số nguyên dương ~a_1, a_2, \ldots, a_n~ ~(a_i \le 10^{18})~.
Output
  • In ra trên một dòng chỉ số của những phần tử được chọn, cách nhau bởi dấu cách.
Sample Input 1
4
1 2 4 5
Sample Output 1
4 2
Sample Input 2
5
14 8 13 6 10
Sample Output 2
1 3 4 5
Notes
  • Ví dụ 1: ~a_4 \text{ XOR } a_2 = 5 \text{ XOR } 2 = 7~ là tổng XOR lớn nhất có thể chọn được.
  • Ví dụ 2: ~a_1 \text{ XOR } a_3 \text{ XOR } a_4 \text{ XOR } a_5 = 14 \text{ XOR } 13 \text{ XOR } 6 \text{ XOR } 10 = 15~.

Đang tải...