TLEoj Contest #03 - Mảng xor

Xem PDF

Nộp bài

Điểm: 1000 (thành phần)
Thời gian: 1.0s
Bộ nhớ: 256M
Input: bàn phím
Output: màn hình

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

Bạn được cho một dãy số a gồm n phần tử. Dãy số b được tạo bằng cách như sau:

  • b_1=a_1\oplus a_2
  • b_2=a_2\oplus a_3
  • b_3=a_3\oplus a_4
  • \dots
  • b_{n-1}=a_{n-1}\oplus a_n
  • b_n=a_n\oplus a_1

Trong đó, \oplus là thao tác bit XOR. Bạn có thể đọc tại đây

Bạn được cho dãy số b, nhiệm vụ của bạn là tìm một dãy số a thỏa mãn điều kiện sao cho thứ tự từ điển của dãy là nhỏ nhất.

Một dãy số a được coi là có thứ tự từ điển nhỏ hơn dãy số b khi tồn tại vị trí i mà:

  • Với mọi vị trí j<i thì a_j=b_j
  • a_i<b_i

Input, Output và Subtasks

Input
  • Dòng thứ nhất gồm 1 số t là số testcase (1\le t\le 10^4)
  • Sau đó là t block được định dạng như sau:
    • Dòng đầu tiên gồm 1 số n (2\le n\le 10^5)
    • Dòng tiếp theo gồm n số b_1,b_2,\dots,b_n (0\le b_i<2^{30})
  • Dữ liệu đảm bảo tổng n trong tất cả testcase không quá 2\times 10^5
Output
  • Xuất ra t dòng được định dạng như sau:
    • Nếu không có dãy thỏa mãn, xuất -1
    • Ngược lại, xuất ra dãy a thỏa mãn có thứ tự từ điển nhỏ nhất, các giá trị được cách nhau bởi 1 dấu cách

Sample

Input
3
3
1 2 3
3
1 0 0
10
3 6 4 5 2 4 5 14 1 8
Output
0 1 3
-1
0 3 5 1 4 6 2 7 9 8

Bình luận

Không có bình luận nào.