AT_tenka1_2015_final_e 天下一コップ

题目描述

有 $N$ 个长方形。第 $i$ 个长方形的宽为 $w_i$,高为 $h_i$。 你可以以任意顺序排列这 $N$ 个长方形,制作一个“杯子”。在排列时,所有长方形都不能旋转,且所有长方形的底边必须在同一条直线上,相邻的长方形必须恰好相接。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_tenka1_2015_final_e/c54c13efcd6eae019d610c5d5c20d4cfe0be9b78.png) 图 1:杯子的例子 现在考虑将杯子装满水。此时,某个坐标 $P$ 存在水的充要条件如下: - $P$ 不在任何一个长方形的内部。 - 从 $P$ 向左和向右分别引出一条射线,这两条射线都必须与某个长方形有公共点。 将杯子装满水后,水所在区域的总面积称为“容积”。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_tenka1_2015_final_e/94a979681e57e8f5928e3f074f3454658b188226.png) 图 2:杯子装满水的例子(容积为 $71$) 排列长方形制作杯子的方式共有 $N!$ 种。请计算这 $N!$ 种杯子的容积之和对 $10^9+7$ 取模的结果。

输入格式

输入通过标准输入给出。 > $N$ > $w_1\ h_1$ > $w_2\ h_2$ > $\vdots$ > $w_N\ h_N$ - 第 $1$ 行为一个整数 $N$,表示长方形的数量,$3 \leq N \leq 10^5$。 - 接下来的 $N$ 行中,第 $i$ 行包含两个用空格分隔的整数 $w_i, h_i$,分别表示第 $i$ 个长方形的宽和高,$1 \leq w_i, h_i \leq 10^9$。

输出格式

输出 $N!$ 种杯子的容积之和对 $10^9+7$ 取模的结果。输出末尾需换行。

说明/提示

## 部分分 本题设有部分分。 - 对于满足 $3 \leq N \leq 8$ 的数据集,答对可得 $15$ 分。 - 对于满足 $3 \leq N \leq 2,000$ 的数据集,答对可再得 $55$ 分。 - 对于满足 $3 \leq N \leq 10^5$ 的数据集,答对可再得 $70$ 分。总分为 $140$ 分。 ## 样例解释 1 $6$ 种杯子的容积之和为 $24$。 ![](http://tenka1-2015-final.contest.atcoder.jp/img/other/tenka\_2015\_final/hoge/cup\_3.png) ## 样例解释 2 宽度和高度相同的长方形也要区分排列。 由 ChatGPT 4.1 翻译