#HK5116. 「JOISC 2013 Day2」收拾吉祥物

「JOISC 2013 Day2」收拾吉祥物

题目描述

题目译自 JOISC 2013 Day2 T2 「マスコットの片付け

JOI 酱刚刚和朋友们一起玩了吉祥物玩偶,欢乐的时光转瞬即逝,朋友们离开后,现在到了收拾的时候。

JOI 酱拥有 R×CR \times C 个吉祥物玩偶,收拾时使用一个由纵向 RR 行、横向 CC 列方格组成的矩形区域。每个方格可以放置一个玩偶。我们将上数第 AA 行、左数第 BB 列的方格记为 (A,B)(A, B)。在收拾开始时,已经有 NN 个玩偶放置在某些方格上,且至少有一个方格是空的。

JOI 酱会逐个放置剩余的玩偶。每当放置一个新玩偶后,若所有有玩偶的方格恰好组成一个矩形,她就会感到一丝小小的幸福(初始状态下有玩偶的方格已组成矩形的情况除外)。所谓“有玩偶的方格恰好组成一个矩形”,是指存在 44 个整数 r1,r2,c1,c2r_{1}, r_{2}, c_{1}, c_{2} $(1 \leq r_{1} \leq r_{2} \leq R, 1 \leq c_{1} \leq c_{2} \leq C)$,使得所有满足 r1ir2r_{1} \leq i \leq r_{2}c1jc2c_{1} \leq j \leq c_{2} 的方格 (i,j)(i, j) 上都有玩偶,而其他方格上均无玩偶。JOI 酱感受到的小幸福次数越多,她今晚就能睡得越香。

在放置玩偶时,不区分玩偶的种类。你需要计算,JOI 酱能感受到最多小幸福次数的放置方式有多少种。

给定收拾玩偶的区域和已放置玩偶的信息,你需要编写一个程序,计算能让 JOI 酱感受到最多小幸福次数的玩偶放置方式的数量,并输出其对 10000000071000000007 取余的结果。

输入格式

从标准输入中读取以下数据:

  • 第一行包含两个整数 R,CR, C,用空格分隔,RR 表示收拾区域的行数,CC 表示列数。
  • 第二行包含一个整数 NN,表示开始收拾时已放置的玩偶数量。
  • 接下来 NN 行中,第 ii 行包含两个整数 Ai,BiA_{i}, B_{i},用空格分隔,表示方格 (Ai,Bi)(A_{i}, B_{i}) 上初始已放置玩偶。这些坐标对不会重复。

输出格式

在标准输出中输出一行一个整数,表示可能放置方式的数量对 10000000071000000007 取余的结果。

2 3
2
1 2
2 2

8

初始状态下,66 个方格的情况如下(\triangle 表示初始已放置玩偶的方格)。

其中方格 (1,2)(1,2)(2,2)(2,2) 已放置玩偶。小幸福次数的最大值为 22。能达到 22 次小幸福的放置方式共有 88 种(数字表示新放置玩偶的顺序)。

在上述 88 种情况中,每次放置第 22 个玩偶时,有玩偶的方格组成 2×22 \times 2 的矩形;放置第 44 个玩偶时,有玩偶的方格组成 2×32 \times 3 的矩形,JOI 酱总共感受到 22 次小幸福。

3 3
2
1 1
3 3

5040

无论按何种顺序放置玩偶,小幸福次数均为 11 次。

数据范围与提示

对于所有输入数据,满足:

  • 2R30002 \leq R \leq 3000
  • 2C30002 \leq C \leq 3000
  • 1N1000001 \leq N \leq 100000

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 1010 R3R \leq 3, C3C \leq 3
22 3030 R50R \leq 50, C50C \leq 50
33 6060 无附加限制