Sudoku
Xem dạng PDFDoMixi đang livestream giải Sudoku thì một viewer nhắn lên: "Anh ơi, bảng của anh sai rồi kìa!" DoMixi hoảng hồn nhìn lại bảng, nhưng không biết chỗ nào sai — anh ấy đang lag não sau 8 tiếng stream. Hãy giúp DoMixi kiểm tra xem bảng Sudoku của anh có lỗi không nhé!
Sudoku là một lưới ~9 \times 9~ gồm các chữ số từ ~1~ đến ~9~. Bảng không có lỗi khi thỏa mãn tất cả các điều kiện sau:
- Mỗi hàng chứa đúng một lần mỗi chữ số từ ~1~ đến ~9~.
- Mỗi cột chứa đúng một lần mỗi chữ số từ ~1~ đến ~9~.
- Mỗi trong ~9~ ô vuông ~3 \times 3~ chứa đúng một lần mỗi chữ số từ ~1~ đến ~9~.
Cho một bảng Sudoku chưa hoàn chỉnh, hãy kiểm tra xem bảng đó có lỗi không.
Lưu ý: Không cần kiểm tra xem bảng Sudoku có thể giải được hay không — chỉ cần kiểm tra các chữ số đã điền có vi phạm quy tắc không.
Dữ liệu vào
Dữ liệu vào mô tả bảng Sudoku. Các ký tự |, - và + tạo nên khung phân chia các ô ~3 \times 3~. Ký tự . đại diện cho ô trống. Các ký tự còn lại là chữ số từ 1 đến 9.
Kết quả
In ra OK nếu bảng không có lỗi. Ngược lại, in ra GRESKA.
Ví dụ
Đầu vào 1:
+---+---+---+
|52.|...|.81|
|.39|58.|...|
|.8.|.9.|...|
+---+---+---+
|24.|...|1.3|
|1..|43.|86.|
|.63|..7|.24|
+---+---+---+
|...|1.9|35.|
|..8|.74|6..|
|31.|86.|7.9|
+---+---+---+
Đầu ra 1:
OK
Đầu vào 2:
+---+---+---+
|3..|6..|..4|
|4.9|8.1|..7|
|..7|.49|6..|
+---+---+---+
|946|157|8.2|
|.2.|3..|745|
|.7.|28.|...|
+---+---+---+
|...|4..|..5|
|8.5|.6.|.2.|
|734|..8|5..|
+---+---+---+
Đầu ra 2:
GRESKA
Giải thích: Ở ví dụ 2, chữ số ~5~ xuất hiện hai lần ở cột ~9~, và cũng xuất hiện hai lần ở ô ~3 \times 3~ góc dưới bên phải.
Giới hạn
| Subtask | Điểm | Ràng buộc |
|---|---|---|
| 1 | 20 | Chỉ cần kiểm tra quy tắc theo hàng |
| 2 | 20 | Chỉ cần kiểm tra quy tắc theo cột |
| 3 | 25 | Chỉ cần kiểm tra quy tắc theo ô ~3 \times 3~ |
| 4 | 35 | Không có ràng buộc thêm |
Bình luận