CF31D Chocolate

题目描述

Bob 有一块 $W \times H$ 的矩形巧克力。他引入了一个直角坐标系,使得点 $(0,0)$ 与巧克力的左下角对应,点 $(W, H)$ 与右上角对应。Bob 决定通过掰断巧克力来将其分成若干块。每一次掰断都是一条平行于某条坐标轴的线段,连接巧克力的边缘。更正式地说,每次掰断沿着直线 $x=x_c$ 或 $y=y_c$ 进行,其中 $x_c$ 和 $y_c$ 均为整数。每一次掰断都会把某一块巧克力分成两个非空部分。每当 Bob 把某个部分分成两部分后,他会分别、独立地继续对这两个新部分进行掰断。另外,他不会移动巧克力的各个部分。Bob 总共进行了 $n$ 次掰断,并把它们按任意顺序记在了本上。最终,他得到了 $n+1$ 块巧克力。现在他想计算每一块巧克力的面积。Bob 很懒,所以他请你帮他完成这个任务。

输入格式

第一行包含三个整数 $W$、$H$ 和 $n$($1 \leq W,H,n \leq 100$),分别表示巧克力的宽度、高度和掰断的次数。接下来的 $n$ 行中,每行包含四个整数 $x_{i,1}$、$y_{i,1}$、$x_{i,2}$、$y_{i,2}$,表示第 $i$ 次掰断的两个端点的坐标($0 \leq x_{i,1} \leq x_{i,2} \leq W, 0 \leq y_{i,1} \leq y_{i,2} \leq H$,并且 $x_{i,1} = x_{i,2}$ 或 $y_{i,1} = y_{i,2}$)。掰断的顺序是任意的。 保证所有掰断信息合法,即存在某种掰断顺序使得每一步都是将某一部分分成两个非空部分。

输出格式

输出 $n+1$ 个数,表示最终得到的各块巧克力的面积,按从小到大排序。

说明/提示

由 ChatGPT 5 翻译