CF335D Rectangles and Square

题目描述

给定 $n$ 个矩形,编号为 $1$ 到 $n$。这些矩形的顶点坐标均为整数,且其边均平行于 $Ox$ 轴和 $Oy$ 轴。矩形之间允许接触,但不重叠(也就是说,没有任何一个点会同时属于两个或更多个矩形的内部)。 你的任务是判断是否存在一个非空的矩形子集,可以组成一个正方形。即,是否存在一个矩形子集和某个正方形,使得该正方形的内部或边界上的每一个点,必定属于子集中至少一个矩形的内部或边界,并且子集中至少一个矩形的内部或边界上的每一个点,也必定属于该正方形的内部或边界。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 10^{5}$),表示矩形的数量。接下来的 $n$ 行,每行用四个整数描述一个矩形,第 $i$ 行为 $x_1$,$y_1$,$x_2$,$y_2$,表示第 $i$ 个矩形的左下角和右上角坐标($0 \leq x_1 < x_2 \leq 3000$,$0 \leq y_1 < y_2 \leq 3000$)。 任意两个矩形不会重叠(不会有任何一个点同时属于两个或以上的矩形内部)。

输出格式

如果存在这样的子集,输出 "YES"(不带引号),然后输出 $k$,即该子集的矩形数量。第二行输出 $k$ 个矩形的编号,顺序任意。如果存在多个解,请输出任意一个。如果不存在这样的子集,输出 "NO"(不带引号)。

说明/提示

第一个测试用例如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF335D/b555a1b2f0fa9850a908273e7c5806edefd08e25.png) 注意,编号为 6、8、9 的矩形也可以组成一个正方形,同样是一个合法解。 第二个测试用例如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF335D/50fe7d9330ec3e3fa026a900ee9c84c7d3b58755.png) 由 ChatGPT 5 翻译