Bắt rắn
Đề bài
Mô tả
Polycarp thích vẽ những con rắn lên một tờ giấy kẻ ô kích thước ( hàng, cột).
Anh vẽ các con rắn bằng các chữ cái Latin thường: con rắn đầu tiên dùng chữ 'a', con thứ hai dùng chữ 'b', con thứ ba dùng chữ 'c', và cứ thế tiếp tục. Mỗi con rắn có một chữ cái riêng, nên tổng số con rắn không vượt quá .
Mỗi con rắn là một đoạn thẳng, nằm ngang hoặc dọc, độ rộng bằng . Nghĩa là mỗi con rắn có kích thước hoặc với là độ dài của nó (con rắn không được gấp khúc).
Khi vẽ một con rắn mới, Polycarp có thể vẽ đè lên những ô đã có chữ: giá trị mới sẽ ghi đè giá trị cũ trong ô đó.
Cho một tờ giấy đã vẽ xong (mỗi ô hoặc là một chữ cái thường, hoặc là dấu chấm '.' biểu diễn ô trống). Hãy xác định xem có thể thu được tờ giấy này từ một tờ giấy trống bằng cách vẽ các con rắn theo luật trên hay không. Nếu có, hãy chỉ ra một cách vẽ.
Lưu ý: các con rắn được đánh chữ cái liên tiếp bắt đầu từ 'a'. Nếu có con rắn thì chúng lần lượt dùng các chữ 'a', 'b', ..., chữ cái thứ ; một con rắn bị vẽ đè hoàn toàn bởi các con rắn sau vẫn được tính vào số thứ tự này (có thể không để lại dấu vết nào trên giấy).
Dữ liệu vào
- Dòng đầu chứa số nguyên : số lượng bộ dữ liệu.
- Với mỗi bộ dữ liệu:
- Dòng đầu chứa hai số nguyên .
- dòng tiếp theo, mỗi dòng gồm ký tự mô tả nội dung các ô: chữ cái Latin thường hoặc dấu chấm '.'.
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra:
- Dòng đầu in YES nếu có thể vẽ được, ngược lại in NO.
- Nếu là YES, dòng tiếp theo in số nguyên (): số con rắn. Sau đó in dòng, dòng thứ gồm bốn số nguyên là toạ độ hai ô đầu mút của con rắn thứ (, ). Các con rắn phải được in theo đúng thứ tự vẽ.
Nếu có nhiều đáp án, in ra đáp án bất kỳ.
Ràng buộc
- Tổng diện tích của tất cả các tờ giấy trong một bộ test không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 1 5 6 ...a.. ..bbb. ...a.. .cccc. ...a.. |
YES 3 1 4 5 4 2 3 2 5 4 2 4 5 |
Vẽ con rắn 'a' dọc theo cột 4 (từ hàng 1 đến hàng 5), rồi 'b' ngang trên hàng 2, rồi 'c' ngang trên hàng 4. Chữ 'a' ở hàng 2 và hàng 4 bị 'b', 'c' vẽ đè. |
| 2 3 3 ... .a. ... 2 2 bb cc |
YES 1 2 2 2 2 YES 3 1 1 1 2 1 1 1 2 2 1 2 2 |
Bộ 1: một con rắn 'a' dài ô. Bộ 2: chữ 'a' không xuất hiện nên đặt con rắn 'a' ở vị trí bất kỳ rồi bị vẽ đè (ở đây trùng chỗ 'b'); sau đó 'b' phủ hàng 1, 'c' phủ hàng 2. |
| 1 3 5 ..b.. aaaaa ..b.. |
NO | Chữ 'b' xuất hiện ở hàng 1 và hàng 3, cùng cột 3, nên con rắn 'b' phải là đoạn dọc từ hàng 1 đến hàng 3. Nhưng 'b' được vẽ sau 'a' (b > a), nên nó sẽ phủ luôn ô (hàng 2, cột 3), khiến ô đó phải là 'b' chứ không thể là 'a'. Vì vậy không thể tạo ra tờ giấy này. |
Bình luận