Duyên hải Bắc Bộ 2013 - Biến đổi bảng số

Xem dạng PDF

Gửi bài giải

Điểm: 20,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Cho bảng số ~A~ gồm ~m~ hàng và ~n~ cột. Các hàng được đánh chỉ số từ ~1~ đến ~m~, từ trên xuống dưới, các cột được đánh chỉ số từ ~1~ đến ~n~, từ trái sang phải. Ô nằm ở hàng ~i~, cột ~j~ được gọi là ô ~(i, j)~ và chứa số 0 hoặc số 1. Trên bảng số có một số ô được đánh dấu. Xét hai loại phép biến đổi sau:

  • Cho phép đổi chỗ hai số đặt trong hai ô ở thế mã giao chân (hai ô ở đỉnh đối diện trên đường chéo của hình chữ nhật kích thước ~2 \times 3~ hoặc ~3 \times 2~).
  • Chọn một ô được đánh dấu và thay đổi giá trị trong ô đó, cụ thể: nếu ô đang chứa số 0 thì đổi thành 1, ngược lại nếu ô đang chứa số 1 thì được đổi thành 0.

Yêu cầu: Cho bảng số ~A~ và những ô được đánh dấu, hãy tính số phép biến đổi ít nhất để biến đổi bảng về toàn số 0 hoặc toàn số 1. Nếu không tồn tại cách biến đổi thỏa mãn ghi -1.

Input

  • Dòng đầu chứa hai số nguyên dương ~m, n~.
  • ~m~ dòng sau, mỗi dòng chứa ~n~ số mô tả bảng số ~A~, cụ thể: ô chứa số 0 không được đánh dấu ghi số 0, ô chứa số 1 không được đánh dấu ghi số 1, ô chứa số 0 được đánh dấu ghi số 2, ô chứa số 1 được đánh dấu ghi số 3.

Output

  • Gồm một dòng, chứa một số nguyên là số phép biến đổi ít nhất để biến đổi bảng về toàn số 0 hoặc toàn số 1. Nếu không tồn tại cách biến đổi thỏa mãn ghi -1.

Sample Input 1

2 3
0 0 1
2 0 0

Sample Output 1

2

Subtasks

  • Các test ứng với 40% số điểm có ~m \times n \le 16~.
  • Các test khác ứng với 30% số điểm có ~m, n \le 20~.
  • Các test còn lại ứng với 30% số điểm có ~m \times n \le 10^6~.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.