小 A 同学所在的学校准备建一个新的大操场,让大家上体育课。
学校的地图是正方形的,用 . 表示空地,用 # 表示建筑。
请在地图中找出一个最大的不包含任何建筑的正方形子矩阵,用于建操场。请编程计算出,这个用于建操场的正方形子矩阵,最大的边长是多少?
比如,假设下面是学校的地图。
..........
...##.....
..........
..........
..........
..........
.#........
..........
..........
..........
在地图中,找出可以建操场的方形子矩阵边长最大为 8,以下是一个方形操场的建造方案,其中的 * 表示操场的边界。
..........
...##.....
..********
..*......*
..*......*
..*......*
.#*......*
..*......*
..*......*
..********
第 1 行读入 2 个整数 N,C,分别代表学校地图的边长和地图中建筑的数量。
接下来读入 C 行,每行 2 个整数 X_i,Y_i,代表在地图的第 X_i 行,第 Y_i 列处有一幢建筑。
输出学校可以建造的正方形操场的最大的边长。
10 3 2 5 2 4 7 2
8
10 12 3 2 1 4 2 2 3 1 1 8 3 4 5 2 1 2 4 2 3 3 5 1 4 5
6
3 5 1 1 1 3 2 2 3 1 3 3
1
请参考题目描述。
对于 40\% 的数据, 1 \le N \le 500,1 \le C \le 500。
对于 100\% 的数据,1 \le N \le 1000,1 \le C \le 10000,1 \le X_i,Y_i \le N。