QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 256 MB Points totaux : 100 Hackable ✓

#18673. 计步器代理服务

Statistiques

如今,有许多 App 科技服务,用户可以通过完成日常生活中的任务来获取积分,并赢得一些小奖品。计步器任务是许多 App 科技服务中广泛使用的一种,每天成功步行 $D$ 米即可获得少量积分。

由于每天步行 $D$ 米比想象中更麻烦,为了那些懒得亲自执行任务的人,韩星创立了一家名为“星韩”的初创公司,专门代理计步器任务。星韩首先在贯穿公司大楼东西方向的长路上,以 $1$ 米的间隔安装了储物柜,并给它们编上了整数编号。距离公司大楼东侧 $A$ 米的储物柜编号为 $A$,西侧 $A$ 米的储物柜编号为 $-A$,位于大楼的储物柜编号为 $0$。

你需要从星韩大厦出发,完成所有客户的任务后返回公司。在你开始工作之前,所有客户已经将手机放在了 $X_i$ 号储物柜中。你需要前往 $X_i$ 号储物柜拿起手机,然后移动至少 $D$ 米,再返回 $X_i$ 号储物柜归还手机。你有一个足够大的背包,可以同时携带多部手机移动。你的移动记录会反映为工作记录,因此你只能在道路上移动。

编写一个程序,计算完成所有客户任务并返回所需移动的最小距离。

输入格式

第一行包含两个整数:客户数 $N$ 与完成任务所需的最小步行距离 $D$,以空格分隔。($1 \leq N \leq 1\,000\,000$;$1 \leq D \leq 10^9$)

第二行包含 $N$ 个整数 $X_i$,表示每个客户放置手机的储物柜编号,以空格分隔。($-10^9 \leq X_i \leq 10^9$)

手机的位置可能重叠,也可能与星韩大厦的位置相同。

所有输入均为整数。

输出格式

第一行输出完成所有 $N$ 位客户的任务并返回所需的最小移动距离。

如果答案不是整数,则输出小于或等于答案的最大整数。

样例

输入 1

3 5
-8 1 5

输出 1

36

说明

以下方法是最优的:

  1. 拿起第 2 位客户的手机。
  2. 拿起第 3 位客户的手机。
  3. 移动到星韩大厦东侧 7.5m 处,然后返回并归还第 3 位客户的手机。
  4. 归还第 2 位客户的手机。
  5. 拿起第 1 位客户的手机。
  6. 移动到星韩大厦西侧 10.5m 处,然后返回并归还第 1 位客户的手机。
  7. 返回星韩大厦。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.