#gigacode2019f. [gigacode_2019_f]クローゼットの配置
[gigacode_2019_f]クローゼットの配置
问题描述
Giga Code君买了一栋房子。这个房子被分为 个区域,水平方向上有 个划分,竖直方向上有 个划分。其中,第 列第 行的格子用 表示。
其中有 个区域放置了物品。第 个物品占据了区域 的全部。并且这些物品不会移动。
Giga Code君决定在这个房子里安置一个壁橱。壁橱必须是一个与房子外墙平行的长方形,并且壁橱所在的区域不能放置物品。然而,由于壁橱在发生地震时移动不便,所以他决定选择满足以下条件的摆放方式之一:
- 无论如何将壁橱移动,无法触碰到物品或者房子的外墙。
例如,可以摆放出如下的壁橱配置:
但是,无法摆放满足条件的壁橱配置如下:
请计算满足条件的壁橱配置有多少种。
约束条件
- 这 个物品被放置在不同的区域
- 所有的输入都是整数
部分问题
这个问题被拆分为若干个子问题,只有当所有子任务都得到正确解答时,才能视为"解决了这个子问题"。 给出的源代码得分等于通过的子任务的得分之和。
- (2 分)
- (11 分)
- (11 分)
- (19 分)
- (16 分)
- (17 分)
- (19 分)
- (5 分) 没有额外的约束条件
输入
输入从标准输入中按以下格式给出。
...
输出
请输出满足即使发生地震也不会动的壁橱配置的数量。
注意事项
由于输入规模较大,建议使用快速输入输出(例如 C++ 的 scanf/printf)
输入范例 1
3 3
2
1 1
3 2
输出范例 1
4
这个示例中,有 种壁橱配置方式,请输出 "4"。
输入范例 2
1 10
3
1 1
1 5
1 8
输出范例 2
3
这个示例符合小任务 2 的条件。一共有 种壁橱配置方式。
输入范例 3
4 6
6
1 3
4 2
2 1
2 4
3 6
4 5
输出范例 3
11
这个示例中,有 种壁橱配置方式。可以自己尝试计数一下!
输入范例 4
4802 5000
10
254 3330
1713 3331
1712 989
256 988
4192 3521
3602 4991
255 987
3603 3520
256 987
4191 4992
输出范例 4
32
这个示例满足小任务 4 的条件。需要注意到小任务 4 中的 可能较大。