CASTLE - Lâu đài
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ớ: 512 megabyte
Đăng bởi: admin

Nông dân John trúng thưởng sổ số độc đắc của Ailen và phần thưởng đó, thật ngạc nhiên, là một tòa lâu đài có nhiều phòng. John rất muốn biết tòa lâu đài của mình có bao nhiêu phòng và hơn thế nữa ông ta muốn phá một bức tường trong lâu đài để có thể có được một phòng lớn hơn (dành chỗ cho các con bò của ông ta tụ tập vui vẻ !!!).

Bạn hãy viết một chương trình giúp John xác định xem tòa lâu đài có bao nhiêu phòng và cần phải phá bức tường nào để có được một phòng lớn nhất có thể.

Sơ đồ lâu đài có thể mô tả như một lưới M cột và N hàng các modul. Mỗi một Modul như vậy có thể có 0, 1, 2, 3, 4 bức tường bao quanh nó. Tất nhiên các modul trên biên của lâu đài luôn có các bức tường ngăn nó với bên ngoài để cho modul không bị ảnh hưởng của gió và mưa: Chẳng hạn dưới đây là một sơ đồ lâu đài:  

    1   2   3   4   5   6   7

  #############################
1 #   |   #   |   #   |   |   #
  #####---#####---#---#####---#
2 #   #   |   #   #   #   #   #
  #---#####---#####---#####---#
3 #   |   |   #   #   #   #   #
  #---#########---#####---#---#
4 # ->#   |   |   |   |   #   #
  #############################

# = tường -,| = không tường -> = vị trí bức tường cần phá để có một phòng mới có diện tích lớn nhất  

Trong ví dụ trên, lâu đài có 4x7 modul. Nó có 5 phòng (có kích thước là 9, 7, 3, 1 và 8). Việc phá bức tường đánh dấu sẽ cho một phòng mới có diện tích lớn nhất trong số các phòng mới nhận được bằng cách phá đi chỉ một bức tường.

Tòa lâu đài có ít nhất hai phòng và luôn có một bức tường có thể bị phá

Input:

- Dòng đầu tiên chứa hai số MN (1≤M,N≤50) là số cột và số hàng của tòa lâu đài
- Tiếp theo là N x M số nguyên (có thể có nhiều số trên một dòng cách nhau bằng dấu cách) lần lượt mô tả các modul của dòng 1 từ tây sang đông, các mô dul của dòng 2 từ tây sang đông,... mỗi modul được gán một giá trị nguyên theo qui tắc như sau: 1-có tường phía tây, 2- có tường phía bắc, 4-có tường phía đông, 8-có tường phía nam. Nếu có nhiều bức tường xung quanh một modul thì giá trị biểu diễn modul đó bằng tổng giá trị biểu diễn của các bức tường. Ví dụ nếu modul có tường phía tây, đông, nam thì giá trị của nó là 1+4+8 = 13 (!).

Output:

- Dòng 1: Ghi số lượng phòng mà lâu đài có thể có
- Dòng 2: Ghi số modul của phòng rộng nhất
- Dòng 3: Ghi số modul của phòng rộng nhất sau khi phá đi một bức tường
- Mô tả bức tường cần phá. Nếu có nhiều bức tường có thể chọn thì chọn bức tường xa nhất về hướng tây. Nếu vẫn còn nhiều bức tường cùng xa nhất về hướng tây có thể chọn thì chọn bức tường xa nhất về hướng nam. Vị trí của bức tường cần phá được xác định bởi (i,j) - chỉ số hàng và cột của modul chứa bức tường và hoặc N (nếu tường ở hướng bắc) hoặc E (nếu tường ở hướng đông)  

Ví dụ

Input

7 4
11 6 11 6 3 10 6
7 9 6 13 5 15 5
1 10 12 7 13 7 5
13 11 10 8 10 12 13

Output

 5
9
16
4 1 E 


Nguồn: NTB Hải Dương

Back to Top