SP3309 BULLETIN - Bulletin Board

题目描述

ACM 学生分会接管了一些学校的公告板。几名成员决定清理掉上面的旧海报,却发现这些海报被层层叠叠贴在一起。随后,他们打赌,想知道未被海报覆盖的面积是多少,海报叠加的最大层数是多少,以及在这个最大层数下被覆盖的面积是多少。为了确定赌注的结果,他们在移除海报时精确测量了所有海报的位置。然而,由于海报数量众多,他们现在需要一个程序来进行这些计算,而这正是你的任务。 举个例子:一个宽 45 个单位、高 40 个单位的公告板上贴了三张海报。第一张的角点坐标是 $(10, 10)$ 和 $(35, 20)$,第二张的角点坐标是 $(20, 25)$ 和 $(40, 35)$,第三张的角点坐标是 $(25, 5)$ 和 $(30, 30)$。结果显示,未被任何海报覆盖的总面积是 1300,最大叠加层数为 2,恰好被 2 层海报覆盖的总面积为 75。

输入格式

输入包含一到二十组数据,最后以一个仅包含数字 0 的单独一行结尾。每组数据由若干行的非负整数组成,整数之间用空格分隔。 每组数据的第一行包含三个整数 $n$、$w$ 和 $h$。其中,$n$ 表示公告板上的海报数量,$w$ 和 $h$ 分别表示公告板的宽度和高度。约束条件如下:$0 < n \leq 100$;$0 < w \leq 50000$;$0 < h \leq 40000$。 接下来的 $n$ 行,每行描述了一张海报的位置。每张海报都是一个矩形,具有水平和垂直的边。坐标从公告板的一个角点开始计量。每行都包含四个整数 $x_l$、$y_l$、$x_h$ 和 $y_h$,分别是矩形的左下角和右上角的坐标。在公告板上,任意海报的坐标都满足以下条件:$0 \leq x_l < x_h \leq w$,$0 \leq y_l < y_h \leq h$。

输出格式

对于每组数据,输出一行,包含三个整数,分别表示未被任何海报覆盖的公告板的总面积、海报叠加的最大层数,以及在这个最大层数下被覆盖的总面积。 注意:如果使用逐个检查每个整数坐标的方法,可能会面临处理 20 亿个坐标对的挑战。 **本翻译由 AI 自动生成**