#gigacode2019f. [gigacode_2019_f]クローゼットの配置
[gigacode_2019_f]クローゼットの配置
配点: 点
問題文
ギガコード君は家を買いました.この家は,左右に 分割,前後に 分割された合計 個の区画に分かれています.そのうち左から 番目,前から 番目のマスを で表します.
そのうち 個の区画には物が置かれています. 個目の物は,区画 全体を占めています.また,これらの物が動くことはありません.
ギガコード君は,この家にクローゼットを つ設置することにしました.クローゼットは家の外壁に平行な長方形でなければならず,クローゼットのある区画に物が置かれていてはなりません.しかし,地震が起きた時にクローゼットが動くと良くないので,次の条件を満たす置き方のうち つを選ぶことにしました.
- クローゼットを向きを変えずにどんな方向に動かそうとしても,物や家の外壁に当たって動かせない.
例えば,次のようなクローゼットの配置ができます.
しかし,条件を満たさないクローゼットの配置はできません.
条件を満たすようなクローゼットの配置はいくつあるか求めてください.
制約
- 個の物はすべて異なる区画に置かれている
- 入力はすべて整数
部分点
この問題はいくつかの小課題に分けられ,その小課題のすべてのテストケースに正解した場合に「この小課題に正解した」とみなされます.
提出したソースコードの得点は,正解した小課題の点数の合計となります.
- (2 点)
- (11 点)
- (11 点)
- (19 点)
- (16 点)
- (17 点)
- (19 点)
- (5 点) 追加の制約はない.
入力
入力は以下の形式で標準入力から与えられます.
: :
出力
地震が起きても動かないようなクローゼットの配置の数を出力してください.
注意
入力のサイズが大きいので、高速な入出力(C++ の場合 scanf/printf など)を使うことが推奨されています.
入力例 1
3 3
2
1 1
3 2
出力例 1
4
この入出力例では,クローゼットを配置する方法は下図のように 個ありますので,「」と出力してください.
入力例 2
1 10
3
1 1
1 5
1 8
出力例 2
3
この入力例は なので小課題 の制約を満たします.
クローゼットを配置する方法は下図のように 個あります.
入力例 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
この入力例は なので小課題 の制約を満たします.
小課題 には, が大きい場合もあることに注意してください.