QOJ.ac

QOJ

时间限制: 2 s 内存限制: 256 MB 总分: 100 可 Hack ✓

#18673. 만보기 대행 서비스

统计

В современном мире существует множество приложений (apptech), которые позволяют получать баллы и небольшие призы за выполнение повседневных задач. Задания с шагомером широко используются во многих таких сервисах: если каждый день проходить $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. Взять телефон третьего клиента.
  3. Переместиться на $7.5$ метра к востоку от офиса «Стартханбёль», затем вернуться и вернуть телефон третьего клиента.
  4. Вернуть телефон второго клиента.
  5. Взять телефон первого клиента.
  6. Переместиться на $10.5$ метра к западу от офиса «Стартханбёль», затем вернуться и вернуть телефон первого клиента.
  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.