#731. Bài toán Bitmask (BITPROB)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một tập hợp gồm n số nguyên không âm nhỏ hơn 2^m . Với mỗi giá trị nguyên mask từ 0 đến 2^m-1 , hãy tính:

  1. Số lượng tập con của mask có trong tập hợp đã cho.
  2. Số lượng tập cha của mask có trong tập hợp đã cho.
  3. Số lượng số trong tập hợp đã cho có AND bitwise với mask bằng chính nó (tức là tập con) và có OR bitwise với mask bằng chính nó (tức là tập cha). Nói cách khác, là số lượng số bằng với mask có trong tập hợp.

Dữ liệu:

  • Dòng đầu tiên chứa hai số nguyên dương n, m ( 1 \le n \le 10^6, 1 \le m \le 20 ).
  • Dòng thứ hai chứa n số nguyên x_1, x_2, \dots, x_n ( 0 \le x_i < 2^m ).

Kết quả: In ra 2^m dòng. Dòng thứ mask in ra 3 số nguyên, tương ứng với 3 yêu cầu trên cho mask đó.

Ví dụ:

Dữ liệu:

5 3
3 4 5 6 7

Kết quả:

0 5 0
0 1 0
0 1 0
1 1 1
0 2 0
2 2 1
2 2 1
5 1 1

Giới hạn:

  • n \le 10^6, m \le 20 .
  • x_i < 2^m .