#4020. 城堡(The Castle) 暂未评定

时间限制:1000 ms 内存限制:128 MiB 输入文件:castle.in 输出文件:castle.out
题目类型:传统 评测方式:文本比较
上传者: root

注意

本题采用文件输入输出。

输入文件为 castle.in, 输出文件为castle.out

题目描述

农夫约翰购买的彩票中了大奖,这让他赢得了一座坐落于爱尔兰乡村的如同神话一般的城堡!

约翰想要将关于城堡的一切统统告诉奶牛,让它们一起分享他的快乐。

在这之前,他需要知道城堡中共有多少个房间,最大的房间有多大。

此外,他还想拆掉一堵墙从而腾出一个更大的房间来。

城堡的平面图可以被划分为 N×M 个方格区域,每个方格区域可以有0~4面墙。

当然,城堡的外边缘一定都是墙壁,从而防止风吹雨打。

参考一下下面这个带注释的城堡平面图:

     1   2   3   4   5   6   7
   #############################
 1 #   |   #   |   #   |   |   #
   #####---#####---#---#####---#   
 2 #   #   |   #   #   #   #   #
   #---#####---#####---#####---#
 3 #   |   |   #   #   #   #   #   
   #---#########---#####---#---#
 4 # ->#   |   |   |   |   #   #   
   ############################# 
   #为墙壁    -,|为没有墙壁
  -> 为移除这面墙能使得到的新房间最大

注意:地图方向为:上北下南左西右东。

例子的城堡的大小是7 x 4。

一个 "房间"是平面图上有连接的"小正方形"的集合。

这个平面图包含五个房间。(它们的大小是9,7,3,1, 和 8 排列没有特别的顺序)。

移除被箭作记号的墙壁来合并两个房间来制造最大的可能房间(移除一面墙所能产生的)。

城堡总是至少有二个房间并且总是有一面墙壁以可能被移除。

输入格式

从文件 castle.in 中读入数据。

地图以一个表格来储存,每个数字描述一个小正方形,N行每行M个数来描述这个平面图。

输入顺序符合那个在上面例子的编号方式。

每个描述小正方形的数字说明小正方形的四面的墙的分布情况,它是下面4个数的和:

1: 在西面有墙

2: 在北面有墙

4: 在东面有墙

8: 在南面有墙

内部的墙壁是会被定义两次;小正方形(1,1)南面的墙也被指出是小正方形(2,1)北面的墙。

第 1 行:二个被空格分开的整数: M 和 N

第 2 到 N+1 行:M x N 个整数,每行M个。

输出格式

输出到文件 castle.out 中。

输出包含一些行:

第 1 行:城堡的房间数目。

第 2 行:最大的房间的大小

第 3 行:移除一面墙能得到的最大的房间的大小

第 4 行:移除哪面墙

选择最佳的墙来移除,(选择最靠西的,如果仍然不能确定,再选择最靠南的)

(【原文】Choose the optimal wall to remove from the set of optimal walls by choosing the wall farther to the west (and then, if still tied, farthest to the south).)

墙壁由它在相邻的小正方形的西部或南方来命名。

样例

样例输入

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

样例输出

5
9
16
4 1 E