KGMEQNUM - Phép biến đổi
Dữ liệu vào: standard input
Dữ liệu ra: standard output
Giới hạn thời gian: 1.0 giây
Giới hạn bộ nhớ: 256 megabyte
Đăng bởi: natsukagami

Nông dân John, sau nhiều ngày vật lộn trên trang trại, đã quyết định bỏ nghề nông dân và theo học tin học!
Nông dân John đặc biệt quan tâm đến các dãy số và các phép toán trên bit (như and, or, xor). Một ngày đẹp trời, nông dân John viết ra giấy một dãy M phép tính biến đổi, áp dụng trên một dãy N số. Mỗi phép tính đều có dạng X op Y, tức áp dụng phép op với số Y vào phần tử thứ X, hoặc X op (Y), tức là áp dụng phép op với giá trị của phần tử thứ Y vào phần tử thứ X. Ở đây op chỉ có thể là and, or hoặc xor.
Hiển nhiên, nếu ta áp dụng phép biến đổi lần lượt 1, 2, 3, ..., M, 1, 2, ..., M, ... thì sau K lần nào đó, ta sẽ thu được một dãy N số mới. Nông dân John băn khoăn, liệu dãy số ban đầu phải là gì để cho ra dãy số sau K phép biến đổi với tổng lớn nhất?

Dữ liệu vào
• Dòng đầu tiên ghi số N là độ dài của dãy số, M là số lượng phép biến đổi trong dãy, và K là số
lượng phép biến đổi thực hiện (1 ≤ N ≤ 10, 1 ≤ M ≤ 100, 1 ≤ K ≤ 10^9 )
• M dòng tiếp theo, mỗi dòng ghi 1 phép biến đổi có dạng như trên, đảm bảo các phép biến đổi đều
đúng và các hằng số đều không âm và nhỏ hơn hoặc bằng 10^9.

Kết quả ra
• Dòng đầu tiên in ra tổng lớn nhất có thể.
• Dòng tiếp theo in N số không âm, tất cả nhỏ hơn 2^31 là dãy N số ban đầu. Nếu có nhiều đáp án,
in bất kì.

Ví dụ

  • input
    2 3 4
    1 and 3
    2 and 2
    1 xor (2)
    output
    5
    5 3

Dãy số: (5, 3) => (1, 3) => (1, 2) => (3, 2) => (3, 2)

Back to Top