CONVEYER - Băng chuyền
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ớ: 128 megabyte
Đăng bởi: admin

Trên băng chuyền hình ô van có M dĩa màu đen và N đĩa màu trắng. Băng chuyền chuyển động liên tục theo chiều kim đồng hồ nếu không có lệnh dừng. Ở một vị trí cố định cạnh băng chuyền có lắp một thiết bị đo khoảng cách và đổi chổ các đĩa trên băng chuyền. Thiết bị này xác định khoảng cách giữa 3 đĩa  liên tiếp trên băng chuyền (không mất tính chất tổng quát, ta gọi 3 đĩa đó là 1, 2 và 3). Nếu có tín hiệu đổi chổ, các đĩa 1 và 3 sẽ được đổi chổ cho nhau, giữ nguyên khoảng cách tương đối giữa các đĩa như cũ.

Hình 1. 10 đĩa trắng và 8 đĩa đen

Hãy lập trình cho biết với vị trí ban đầu của các đĩa đen - trắng trên băng chuyền, ta có thể đổi vị trí các đĩa sao cho các đĩa cùng màu nằm liên tiếp nhau ( Hình 2) hay không.

Hình 2.

Dữ liệu vào

- Dòng đầu tiên chứa số nguyên M+N ( 10 ≤ M+N ≤ 20),

- Dòng thứ 2 chứa M+N số 0,1 : 0 – đĩa trắng, 1 – đĩa đen.

Kết quả ra: Số nguyên K - số lần đổi chổ (càng ít càng tốt) hoặc số -1, nếu không thể đưa các đĩa cùng màu về các vị trí liên tiếp nhau.

Ví dụ

  • input
    18
    0 0 1 0 1 1 1 1 0 1 0 0 1 0 0 0 0 1
    output
    4

Giải thích:   

- Bước 1: lấy đĩa ở vị trí 1 làm tâm quay

- Bước 2: lấy đĩa ở vị trí 3 làm tâm quay

- Bước 3: lấy đĩa ở vị trí 12 làm tâm quay

- Bước 4: lấy đĩa ở vị trí 10 làm tâm quay

Back to Top