P14384 [JOISC 2017] 烟花棒 / Sparklers
题目描述
JOI 君和他的朋友们将玩仙女棒。总共有 $N$ 个人,包括 JOI 君和他的朋友们。如果某人点燃一根仙女棒,它会持续燃烧恰好 $T$ 秒。
一开始,JOI 君和他的朋友们沿着一条从东向西延伸的直线街道分散站立。JOI 君和他的朋友们被编号为 $1$ 到 $N$。对于任意 $i, j$,若 $i < j$,则第 $i$ 个人站在第 $j$ 个人的西侧,或者第 $i$ 个人与第 $j$ 个人站在同一位置。第 $i$ 个人距离最西侧的人(即第 $1$ 个人)的距离为 $X_i$ 米。JOI 君是第 $K$ 个人。
当他们开始玩仙女棒时,他们发现打火机燃料不足,只能点燃一根仙女棒。
因此,他们决定先点燃 JOI 君的仙女棒,然后通过用燃烧的仙女棒接触其他仙女棒来点燃它们。
由于每根仙女棒只能燃烧 $T$ 秒,JOI 君和他的朋友们必须合作,将火势传递给所有仙女棒。当他们从一根燃烧的仙女棒点燃另一根仙女棒时,必须满足以下条件:
- 他们必须在点燃仙女棒后的 $T$ 秒内接触一根燃烧的仙女棒。他们可以在恰好 $T$ 秒后进行接触。
- 他们计划点燃的仙女棒此前不能已被点燃。
- 持有燃烧仙女棒的人与持有未点燃仙女棒的人必须处于同一位置。
我们忽略从一根仙女棒点燃另一根仙女棒所需的等待时间。
由于 JOI 君和他的朋友们一开始是分散站立的,他们必须适当移动以传递火势。他们可以以任意速度向西或向东奔跑。但奔跑过快在玩耍时是危险的。因此,他们将制定规则:他们的速度不得超过每秒 $s$ 米。这里,$s$ 是一个非负整数。
他们应如何设定速度上限,才能将火势传递给所有仙女棒?
**任务**
给定仙女棒燃烧的持续时间以及 JOI 君和他的朋友们的初始位置,编写一个程序,计算最小的整数 $s$,使得当速度上限为每秒 $s$ 米时,他们能够将火势传递给所有仙女棒。
输入格式
从标准输入读取以下数据:
- 第一行包含三个由空格分隔的整数 $N$、$K$、$T$。表示共有 $N$ 个人,JOI 君是第 $K$ 个人,且一根仙女棒可燃烧 $T$ 秒。
- 接下来的 $N$ 行中,第 $i$ 行($1 \le i \le N$)包含一个整数 $X_i$。表示第 $i$ 个人在初始时距离最西侧的人为 $X_i$ 米。
输出格式
向标准输出写入一行。该行输出包含最小的整数 $s$,使得当速度上限为每秒 $s$ 米时,他们能够将火势传递给所有仙女棒。
说明/提示
### 样例 1 解释
在本样例输入中,速度上限可以为每秒 $2$ 米。第一个人向东移动,第二个人向西移动,第三个人向西移动;他们的速度均为每秒 $2$ 米。经过 $50$ 秒后,第二个人将火传递给第一个人。随后,第一个人向东移动,第三个人向西移动;他们的速度仍为每秒 $2$ 米。再经过 $25$ 秒后,第一个人将火传递给第三个人。若速度上限为每秒 $1$ 米,则他们无法将火势传递给所有仙女棒。
### 样例 2 解释
在本样例输入中,速度上限可以为每秒 $8$ 米。第一个人向东移动,第二个人向东移动,第三个人向西移动;他们的速度均为每秒 $8$ 米。经过 $3$ 秒后,第二个人停止移动,而第一和第三个人继续移动。再经过 $6.5$ 秒后,第二和第三个人到达同一位置,但他们并未传递火势;第二和第三个人停止移动,第一个人继续移动。再经过 $0.5$ 秒后,第二个人将火传递给第三个人;第一个人继续移动,第三个人向西移动,速度为每秒 $8$ 米。再经过 $9$ 秒后,第一和第三个人到达同一位置,第三个人将火传递给第一个人。若速度上限为每秒 $7$ 米,则他们无法将火势传递给所有仙女棒。
### 数据范围
所有输入数据满足以下条件:
- $1 \le K \le N \le 100\,000$。
- $1 \le T \le 1\,000\,000\,000$。
- $0 \le X_i \le 1\,000\,000\,000$($1 \le i \le N$)。
- $X_1 = 0$。
- $X_i \le X_j$($1 \le i \le j \le N$)。
### 子任务
共有 3 个子任务。每个子任务的得分及附加约束如下:
**子任务 1 [30 分]**
- $N \le 20$。
**子任务 2 [20 分]**
- $N \le 1\,000$。
**子任务 3 [50 分]**
无额外约束。
翻译由 Qwen3-235B 完成