Biến đổi bit

View as PDF

Submit solution

Points: 100.00 (partial)
Time limit: 10.0s
Memory limit: 1G
Input: stdin
Output: stdout

Author:
Problem type
Allowed languages
C, C++, GAS64, Pascal, Perl, PHP, Python, Sed, TCL, Text

Cho dãy ~N~ số nguyên ~A_1~, ~A_2~, ..., ~A_N~ trong đó mỗi số được lưu trữ như một số nguyên không dấu ~K~ bit. Lập bảng bit ~N~ dòng, ~K~ cột tương ứng với dãy số đã cho theo quy tắc: dòng thứ ~i~ của bảng là chuỗi bit biểu diễn số hạng ~A_i~.

Thí dụ, dãy gồm 3 số 16 bit: 43212, 7184, 12571 tương ứng với bảng bit 3 dòng, 16 cột:

1010100011001100
0001110000010000
0011000100011011

Người ta thực hiện các phép biến đổi dưới đây trên bảng bit:

  • Đảo ngược giá trị các bit trên một dòng.
  • Đảo ngược giá trị các bit trên một cột.

Một dãy các biến đổi như vậy sẽ làm thay đổi bảng bit và nhận được một dãy các số nguyên tương ứng. Hãy tìm dãy biến đổi có ít phép biến đổi nhất đưa một dãy số nguyên cho trước về một dãy số nguyên có tổng đạt giá trị lớn nhất.

Dữ liệu vào:

Gồm 2 dòng:

  • Dòng đầu ghi 2 giá trị ~N~ và ~K~
  • Dòng sau ghi ~N~ giá trị nguyên ~A_1~, ~A_2~, ..., ~A_N~.

Kết quả:

Gồm 2 dòng:

  • Dòng đầu ghi số phép biến đổi đã dùng,
  • Dòng sau ghi ~N~ giá trị nguyên đã biến đổi tương ứng từ dãy số đã cho.

Giới hạn kích thước: ~N~ không quá 200, ~K~ không quá 256.

Trong thí dụ trên, các dữ liệu vào và ra là:

Input

3  16
43212   7184   12571

Output

8
48607   63228   56311

Comments

Please read the guidelines before commenting.


There are no comments at the moment.