CF152D Frames
题目描述
有一天,Vasya 得到了一张大小为 $n \times m$ 格子的方格纸。Vasya 非常喜欢几何图形,于是在纸上画了两个矩形。每个矩形的边都与坐标轴平行,且每条边的长度不少于 $3$ 个格子,并且这些边沿着网格线绘制。矩形的边可以位于纸张的边缘。然后 Vasya 给两个矩形的“边框”上的所有格子染上了颜色。
我们将矩形的“边框”定义为:在矩形内部且与矩形边界至少有一条边相邻的所有格子组成的集合。
不久之后,Vasya 又找到了一张同样大小的方格纸,他不能确定是不是原来那一张。于是他请你判断,新找到的这张纸上是否也只画着两个“边框”,并且除了这两个边框外没有其它标记。
请注意,Vasya 所画的这两个边框之间可以随意相交、重叠甚至完全重合。
坐标系统如下:$X$ 轴自上向下递增,格子的 $x$ 坐标取值范围为 $1$ 到 $n$;$Y$ 轴自左向右递增,格子的 $y$ 坐标取值范围为 $1$ 到 $m$。
输入格式
第一行包含两个正整数 $n$ 和 $m$($3 \le n, m \le 1000$),表示纸张的尺寸。接下来有 $n$ 行,每行包含 $m$ 个字符,字符为 "."(表示未染色格子)或 "#"(表示染色格子),描述了找到的方格纸的染色情况。
输出格式
第一行输出单词 “YES” 或 “NO”,表示是否该纸张上正好只有两个边框。如果答案为 “YES”,则第二行输出 $4$ 个整数,表示第一个边框的左上角和右下角格子的坐标;第三行输出 $4$ 个整数,表示第二个边框的左上角和右下角格子的坐标。如果有多组答案,输出任意一组均可。
说明/提示
在第一个样例中,纸上有两个边框。第一个是:
```
###..
#.#..
###..
.....
```
第二个是:
```
#####
#...#
#...#
#####
```
在第二个样例中,所画的图形不是合法的边框。注意,合法的边框的高和宽都不得小于 $3$。
由 ChatGPT 5 翻译