#ys0053. 芯片热量分析

芯片热量分析

题目背景

中午,随着大规模并发评测的进行,机房的一台主服务器发出了温度警报。王老师立刻导出了该服务器核心芯片的热力成像图,试图找出过热的区域。

导出的热力图可以用一个N×NN \times N1N10001 \leq N \leq 1000)的矩形图案表示,例如:

##....
....#.
.#..#.
.#####
...###
....##

每个 # 字符表示一块 1×11 \times 1 正方形格子大小的高温过热区域,. 字符表示温度正常的区域。

过热区域往往会连成一片形成“过热斑块”(上图中有两个斑块)。一个过热斑块是连通的:如果其中每个高温格子都可以从这个斑块中其他所有的高温格子出发,重复地前往东、南、西、北四个方向上相邻的高温格子到达。

王老师想要计算出目前面积最大的过热斑块的面积和周长。斑块的面积就是这个斑块中 # 的数量。如果有多个过热斑块并列面积最大,他想要知道其中周长最小的那个斑块的周长。在上图中,小的过热斑块的面积为2,周长为6;大的过热斑块的面积为13,周长为22。

**注意:**一个过热斑块可能在中间有“冷洞”(由高温区域包围着的正常温度区域)。如果这样,洞的边界同样计入斑块的周长。一个过热斑块也可能出现在被其他过热斑块包围的区域内,在这种情况下它们计为不同的斑块。例如,一个面积为1的斑块被包围在一个面积为16的斑块内:

#...##
#.#.#.
#...##

计算过热斑块的面积和周长十分重要,因为王老师最终想要最小化周长与面积的比值,他称之为芯片的“散热率”。当这个比值较小的时候,中心区域的热量最难散发,容易导致宕机。

输入格式

输入的第一行包含NN。 以下NN行描述了热力图的结果。其中至少出现一个 # 字符。

输出格式

输出一行,包含两个空格分隔的整数,第一个数为最大的过热斑块的面积,第二个数为它的周长。如果多个过热斑块并列面积最大,输出其中周长最小的那个的信息。

输入样例

6
##....
....#.
.#..#.
.#####
...###
....##

输出样例

13 22