P14383 [JOISC 2017] 港口设施 / Port Facility

题目描述

每天,大量集装箱通过船只运抵 JOI 港口,随后由卡车运往全国各地。 JOI 港口非常狭窄,仅有两个区域可用于堆放集装箱。在每个区域中,我们可以垂直堆叠任意数量的集装箱。 出于安全考虑,当集装箱由船只运抵时,我们必须将其放置在其中一个区域的顶部;若该区域已有集装箱,则必须将其叠放在已有集装箱的上方。当集装箱由卡车运走时,我们必须从其中一个区域的顶部取走集装箱。 今天,将有 $N$ 个集装箱运抵 JOI 港口,且所有集装箱最终都将由卡车运走。 你的任务是管理 JOI 港口的设施。对于每个集装箱,你已知其到达时间和离开时间。请编写一个程序,计算满足上述条件的堆放与取走集装箱的方式总数,结果对 $1\,000\,000\,007$ 取模。 **任务** 给定运抵 JOI 港口的集装箱数量,以及每个集装箱的到达与离开时间,编写一个程序,计算满足条件的堆放与取走集装箱的方式总数,结果对 $1\,000\,000\,007$ 取模。

输入格式

从标准输入读取以下数据: - 第一行包含一个整数 $N$,表示运抵 JOI 港口的集装箱数量。 - 接下来的 $N$ 行中,第 $i$ 行($1 \le i \le N$)包含两个由空格分隔的整数 $A_i$、$B_i$。表示第 $i$ 个集装箱将在时间 $A_i$ 到达 JOI 港口,并在时间 $B_i$ 由卡车运走。

输出格式

向标准输出写入一行。该行输出包含满足条件的堆放与取走集装箱的方式总数,结果对 $1\,000\,000\,007$ 取模。

说明/提示

### 样例 1 解释 共有 4 种堆放与取走集装箱的方式。将两个区域记为 A、B。以下方式满足条件: - 将第 1、2、3、4 号集装箱分别放入区域 A、B、A、A。 - 将第 1、2、3、4 号集装箱分别放入区域 A、B、A、B。 - 将第 1、2、3、4 号集装箱分别放入区域 B、A、B、A。 - 将第 1、2、3、4 号集装箱分别放入区域 B、A、B、B。 ### 数据范围 所有输入数据满足以下条件: - $1 \le N \le 1\,000\,000$。 - $1 \le A_i \le 2N$($1 \le i \le N$)。 - $1 \le B_i \le 2N$($1 \le i \le N$)。 - $A_i < B_i$($1 \le i \le N$)。 - $2N$ 个整数 $A_1, \cdots, A_N, B_1, \cdots, B_N$ 互不相同。 ### 子任务 共有 4 个子任务。每个子任务的得分及附加约束如下: **子任务 1 [10 分]** - $N \le 20$。 **子任务 2 [12 分]** - $N \le 2\,000$。 **子任务 3 [56 分]** - $N \le 100\,000$。 **子任务 4 [22 分]** 无额外约束。 翻译由 Qwen3-235B 完成