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"(不带引号)。
说明/提示
第一个测试用例如下图所示:

注意,编号为 6、8、9 的矩形也可以组成一个正方形,同样是一个合法解。
第二个测试用例如下图所示:

由 ChatGPT 5 翻译