Dragica là một đội trưởng của một đội bowling nghiệp dư địa phương, cô ấy là một đầu bếp đam mê và có lẽ là một trong những người giải câu đố chữ thập tốt nhất ở Croatia. Một câu đố chữ thập bao gồm ~N \times M~ ô vuông được sắp xếp thành ~N~ hàng và ~M~ cột. Một số ô vuông trống (và phải được điền bằng chữ cái bằng cách trả lời câu hỏi) và một số ô vuông đã được điền. Các ô vuông đã được điền chứa tối đa hai câu hỏi mà nên được trả lời theo chiều ngang sang phải hoặc dọc xuống dưới. Các câu trả lời cho các câu hỏi được viết trong các ô vuông trống trước cho đến khi chúng đến ranh giới của câu đố chữ thập hoặc một ô vuông đã được điền ban đầu. Một ô vuông đã được điền ban đầu chứa một câu hỏi theo chiều ngang nếu một ô vuông bên phải tồn tại và trống. Tương tự, một ô vuông đã được điền ban đầu chứa một câu hỏi theo chiều dọc nếu một ô vuông phía dưới nó tồn tại và trống.
Dragica thường biết tất cả các câu trả lời cho các câu hỏi của câu đố chữ thập, nhưng muốn đọc và trả lời ít câu hỏi nhất có thể và vẫn giải quyết được toàn bộ câu đố chữ thập. Hãy giúp cô ấy đạt được mục tiêu của mình.
Input
- Dòng đầu tiên chứa các số nguyên ~N~ và ~M~ ~(2 \leq N, M \leq 500)~ từ mô tả bài toán.
- Mỗi trong số ~N~ dòng tiếp theo chứa ~M~ ký tự ~0~ hoặc ~1~, trong đó ~0~ biểu thị một ô vuông trống cần được điền bằng cách trả lời một câu hỏi và ~1~ biểu thị một ô vuông đã được điền ban đầu có thể chứa tối đa hai câu hỏi như được giải thích trong mô tả bài toán. Hàng đầu tiên và cột đầu tiên sẽ được điền bằng các ký tự ~1~.
Đảm bảo rằng sẽ có ít nhất một ký tự '0' trong đầu vào.
Output
- Trong dòng đầu tiên, bạn nên đầu ra số lượng tối thiểu câu hỏi có thể được trả lời để giải quyết một câu đố chữ thập. Hãy ký hiệu số đó là ~X~.
- Mỗi trong số ~X~ dòng tiếp theo nên mô tả một câu hỏi cần được trả lời. Mô tả câu hỏi nên được in ra theo định dạng ~R C~ hướng, trong đó ~R~ là số hàng của câu hỏi, ~C~ là số cột của câu hỏi và hướng là ~DESNO~ (tiếng Croatia có nghĩa là PHẢI) hoặc ~DOLJE~ (tiếng Croatia có nghĩa là XUỐNG) tùy thuộc vào việc Dragica có nên trả lời câu hỏi theo chiều dọc hay chiều ngang.
Nếu có nhiều giải pháp, hãy đầu ra bất kỳ giải pháp nào.
Chú ý
- 18 điểm: Có tối đa 9 ô vuông với ~1~.
- 32 điểm: ~N \leq 500~ và ~M \leq 10~.
- 60 điểm: Không có ràng buộc bổ sung.
Nếu giải pháp của bạn đầu ra dòng đầu tiên chính xác trên mỗi bài kiểm tra của một nhóm con bài toán, nhưng nó không thể đầu ra các dòng khác một cách chính xác trong một số bài kiểm tra, bạn sẽ được tính điểm bằng 50% số điểm được phân cho nhóm con bài toán đó.
Sample Input 1
4 5
11111
10000
10000
10000
Sample Ouput 1
3
2 1 DESNO
3 1 DESNO
4 1 DESNO
Sample Input 2
6 4
1111
1011
1000
1011
1010
1000
Sample Ouput 2
4
1 2 DOLJE
4 4 DOLJE
5 3 DOLJE
3 1 DESNO
Sample Input 3
9 8
11111111
10000000
10001000
10010001
11100001
10100110
10001000
10100001
10010001
Sample Ouput 3
14
5 2 DOLJE
5 8 DOLJE
8 3 DOLJE
2 1 DESNO
3 1 DESNO
3 5 DESNO
4 1 DESNO
4 4 DESNO
5 3 DESNO
6 3 DESNO
7 1 DESNO
7 5 DESNO
8 3 DESNO
9 4 DESNO
Giải thích
Giải thích của ví dụ thứ ba: Một ví dụ về một câu đố chữ thập thực tế tương đương với cái được mô tả trong ví dụ này được đưa ra trên trang tiếp theo. Các ô vuông đã được điền ban đầu được tô đen và những ô vuông đó chứa ít nhất một câu hỏi được đánh số. Dưới câu đố, bạn có thể thấy các câu hỏi cần được giải theo chiều ngang (cột "across") và theo chiều dọc (cột "down"). Lưu ý rằng một số ô vuông đã được điền ban đầu không chứa câu hỏi nào, một số chứa một câu hỏi duy nhất (ví dụ: 8 và 13), trong khi một số chứa hai câu hỏi (ví dụ: 10 và 12). Để giải quyết câu đố chữ thập này, bạn cần biết câu trả lời cho ít nhất 14 câu hỏi được liệt kê trong đầu ra. Bạn có thể giải được nó không?
Bình luận