CF187E Heaven Tour

题目描述

故事并没有像 PMP 想象的那样结束。上帝又给了他一次转生的机会,让他能够重获新生。但在他能够回来之前,上帝告诉他,PMP 必须向包括著名程序员在内的 $n$ 位伟人询问他们的人生经历。 这些人站在一条直线上。他们按照从左到右的顺序编号为 $1$ 到 $n$。第 $i$ 个人的位置坐标为 $x_i$,其中 $x_i < x_{i+1}$,$i < n$。PMP 需要以任意顺序逐一拜访所有这些人,每个人只能被拜访一次。旅行开始时,他位于第 $s$ 个人的位置,并首先向他询问经验。 每次 PMP 想要改变自己的位置时,他都必须向一位天使交一张票,然后天使带他飞到目的地。天使将 PMP 从一个位置带到另一个位置,将他放下,其间不会拜访其他人。从第 $i$ 个人移动到第 $j$ 个人需要花费 $|x_i - x_j|$ 的时间。当 PMP 拜访完所有人后,就可以复活。 有两种天使:一种天使只向右飞行,只接受右票,另一种只向左飞行,只接受左票。这两种天使的数量都是无限的。PMP 有 $l$ 张左票和 $n-1-l$ 张右票。 PMP 想以最快的速度拜访所有人,好能参加今年的总决赛(而不是错过的去年决赛)。他想知道拜访所有人的最短时间,并需要知道该如何移动。

输入格式

输入的第一行包含三个用空格分隔的整数 $n, l, s$,表示需要拜访的人数、PMP 拥有的左票数、以及他起始的人的编号。 第二行包含 $n$ 个用空格分隔的整数,第 $i$ 个整数 $x_i$ 表示第 $i$ 个人的位置坐标(其中 $0 = x_1 < x_2 < \cdots < x_n \leq 10^9$)。 $2 \leq n \leq 10^5$,$0 \leq l < n$,$1 \leq s \leq n$。

输出格式

如果 PMP 拥有的票数不足以拜访所有人,则输出一行 $-1$。 否则,第一行输出 PMP 完成全部拜访的最短时间。 第二行输出 $n-1$ 个整数,表示在一种最优方案下,PMP 依次拜访的人的编号(除初始位置外)。如果有多种答案,输出任意一种即可。

说明/提示

在这里缅怀一位伟大的竞赛者,他在一年前离开了我们。愿 Renat Mullakhanov 安息。 由 ChatGPT 5 翻译