Khoảng cách Hamming

View as PDF

Time limit: 4.0s , Memory limit: 1G , Points: 100 (partial)

Khoảng cách Hamming của hai số được định nghĩa là số lượng bit khác nhau trong biểu diễn nhị phân của hai số đó.

Cho số nguyên dương m và mảng a gồm n số nguyên a_1,a_2,...,a_n (a_i \le 2^m) Với mỗi phần tử a_i, tìm khoảng cách Hamming lớn nhất giữa nó với các phần tử khác trong mảng.

Hay nói cách khác, với mỗi phần tử a_i, yêu cầu tính:

\displaystyle \max_{1 \le j \le n}\{hamming(a_i,a_j)\}

Input

  • Dòng đầu tiên chứa hai số nguyên nm (1 \le n \le 2^m;\; 1 \le m \le 20).
  • Dòng thứ hai chứa n số nguyên a_i (0 \le a_i < 2^m).

Output

  • In ra trên một dòng gồm n số nguyên là khoảng cách Hamming lớn nhất với các phần tử khác của từng phần tử.

Samples

Sample Input 1
4 4
9 12 9 11
Sample Output 1
2 3 2 3
Sample Input 2
4 4
5 7 3 9
Sample Output 2
2 3 2 3
Sample Input 3
4 4
3 4 6 10
Sample Output 3
3 3 2 3

Scoring

  • Subtask 1 với 30\% số điểm: m \le 10
  • Subtask 2 với 30\% số điểm: m \le 16
  • Subtask 3 với 40\% số điểm: Không còn ràng buộc gì thêm

Clarification

Trong ví dụ thứ ba, các số 3,4,6,10 được biểu diễn dưới dạng nhị phân lần lượt là 0011,0100,0110,1010. Phần tử giá trị 34 có khoảng cách Hamming là 3, tương tự với phần tử giá trị 410. Phần tử giá trị 6 có khoảng cách Hamming lớn nhất bằng 2 so với các phần tử khác.


Comments