C0343 [USACO]形成的区域

内存限制:256 MB 时间限制:1000 ms

题目描述

$N$ 个不同的颜色的不透明的长方形 $(1 \le N \le 1000)$ 被放置在一张横宽为 $A$ 竖长为 $B$ 的白纸上。 这些长方形被放置时,保证了它们的边与白纸的边缘平行。 所有的长方形都放置在白纸内,所以我们会看到不同形状的各种颜色。 坐标系统的原点 $(0,0)$ 设在这张白纸的左下角,而坐标轴则平行于边缘。

输入格式

按顺序输入放置长方形的方法。第一行输入的是那个放在底的长方形(即白纸)。

第 $1$ 行:$A$ ,$B$ 和 $N$,由空格分开 $(1 \le A, B \le 10,000)$

第 $2$ 到 $N+1$ 行:为五个整数 $llx, lly, urx, ury, color$ 这是一个长方形的左下角坐标,右上角坐标 $(x+1,y+1)$ 和颜色。

颜色 $1$ 和底部白纸的颜色相同。 $(1 \le color \le 2500)$

输出

输出且仅输出所有能被看到颜色,和该颜色的总面积(可以由若干个不连通的色块组成),按 color 增序排列。

样例

样例输入 1

20 20 3 2 2 18 18 2 0 8 19 19 3 8 0 10 19 4

样例输出 1

1 91 2 84 3 187 4 38

提示

【样例解释】

请注意:被 $(0,0)$ 和 $(2,2)$ 所描绘的是 $2$ 个单位宽、$24$ 个单位高的区域

这里有一个示意图输入:

11111111111111111111
33333333443333333331
33333333443333333331
33333333443333333331
33333333443333333331
33333333443333333331
33333333443333333331
33333333443333333331
33333333443333333331
33333333443333333331
33333333443333333331
33333333443333333331
11222222442222222211
11222222442222222211
11222222442222222211
11222222442222222211
11222222442222222211
11222222442222222211
11111111441111111111
11111111441111111111

'4' 在 $(8,0)$ 与 $(10,19)$ 形成的是宽为 $2$ 的区域,而不是 $3$。(也就是说,$4$ 形成的区域包含 $(8,0)$ 和 $(8,1)$,而不是 $(8,0)$ 和 $(8,2)$) 。

【提示】

一个记录所有点的数组太大了;内存最大 16MB。

掌握长方形的坐标动向,当发生覆盖时把长方形分开。

+--------+      +-+--+--+
|        |      | |2 |  |
|        |      + +--+  |
|  +-+   |  --> | |  |  |
|  +-+   |      |1|  |3 |
|        |      | +--+  |
|        |      | | 4|  |
+--------+      +-+--+--+