AT_mujin_pc_2017_a Robot Racing

题目描述

你正在开发一种青蛙型机器人。你决定让这些机器人进行一场竞赛。 首先,你将 $N$ 台机器人放置在数轴上。机器人编号为 $1$ 到 $N$。现在,第 $i$ 个机器人位于坐标 $x_i$。其中,所有 $x_i$ 都是整数,并且满足 $0 < x_1 < x_2 < ... < x_N$。 你会不断重复以下操作: - 从数轴上的机器人中选择一台。设选中的机器人的坐标为 $x$。从 $x-1$、$x-2$ 中没有其他机器人占据的位置选择一个作为着陆点。然后让选中的机器人跳到这个着陆点。 当某个机器人的坐标小于等于 $0$ 时,认为它已经到达终点,并立即将其从数轴上移除。你需要不断进行操作,直到所有机器人都到达终点为止。 根据你的操作顺序,$N$ 台机器人到达终点的顺序可能有多种。请问 $N$ 台机器人最终到达终点的顺序有多少种不同的可能?请输出该数对 $10^9+7$ 取模的结果。

输入格式

输入以如下格式由标准输入给出。 > $N$ $x_1$ $x_2$ ... $x_N$

输出格式

输出 $N$ 台机器人到达终点的可能顺序数,对 $10^9+7$ 取模的结果。

说明/提示

### 约束 - $2 \leq N \leq 10^5$ - $x_i$ 是整数 - $0 < x_1 < x_2 < ... < x_N \leq 10^9$ ### 部分分数 - 有 $500$ 分的测试点满足 $N \leq 8$ ### 样例解释 1 $3$ 台机器人到达终点的顺序,共有如下 $4$ 种可能: - $(机器人\ 1 \to 机器人\ 2 \to 机器人\ 3)$ - $(机器人\ 1 \to 机器人\ 3 \to 机器人\ 2)$ - $(机器人\ 2 \to 机器人\ 1 \to 机器人\ 3)$ - $(机器人\ 2 \to 机器人\ 3 \to 机器人\ 1)$ ### 样例解释 2 $3$ 台机器人到达终点的顺序,共有如下 $6$ 种可能: - $(机器人\ 1 \to 机器人\ 2 \to 机器人\ 3)$ - $(机器人\ 1 \to 机器人\ 3 \to 机器人\ 2)$ - $(机器人\ 2 \to 机器人\ 1 \to 机器人\ 3)$ - $(机器人\ 2 \to 机器人\ 3 \to 机器人\ 1)$ - $(机器人\ 3 \to 机器人\ 1 \to 机器人\ 2)$ - $(机器人\ 3 \to 机器人\ 2 \to 机器人\ 1)$ 例如,按照下图的操作顺序,可以得到 $(机器人\ 3 \to 机器人\ 2 \to 机器人\ 1)$ 的达终顺序。 ![](https://atcoder.jp/img/mujin/a55aed48a00614569d4844f39807e2fb.png) ### 样例解释 4 请输出答案对 $10^9+7$ 取余的结果。此用例不在部分分数的测试数据范围内。 由 ChatGPT 5 翻译