logo AlgoBeat OnlineJudge
登录 注册

#213633. [KOI 2025 #2] 镜子

内存限制:1024 MiB 时间限制:1000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

试题来源:https://koi.or.kr/archives/。中文翻译做了少量本土化修改。

按照署名—非商业性使用—相同方式共享 4.0 协议国际版进行授权。


你正在一条数轴上玩游戏。你的角色位于位置 ,数轴上放置了 个镜子。各个镜子的位置从左到右依次为 。同一个位置上可能有多个镜子。

你可以使用镜子来改变角色的位置。使用镜子后,角色的位置会移动到以该镜子为中心的对称点。也就是说,当你的角色位于位置 时,如果使用位于位置 的镜子,你的角色将移动到位置

个镜子每个都必须且只能使用一次。也就是说,不能忽略任何一个镜子不使用,也不能对同一个镜子使用两次或以上。除了每个镜子都必须且只能使用一次这个条件外,你可以按任意顺序使用这些镜子。

你需要计算并输出在这些条件下,你的角色能到达的位置的最大值。

输入格式

第一行给定镜子的数量 和你的初始位置 ,以空格分隔。

第二行依次给定各个镜子的位置 ,以空格分隔。

输出格式

输出将 个镜子每个都使用一次后,角色最终位置的最大值。

注意,答案可能会很大,在某些编程语言中可能需要使用 64 位整型变量 (long long)。

样例

样例输入 1

2 0
-1 2

样例输出 1

6

样例输入 2

6 3
-4 -2 2 6 8 9

样例输出 2

57

样例输入 3

9 9
0 1 3 3 4 5 8 9 10

样例输出 3

49

样例输入 4

1 1000000000
-999999999

样例输出 4

-2999999998

数据范围与提示

样例 1 解释

如果先使用第 1 个镜子 (位置为 -1),再使用第 2 个镜子 (位置为 2),如上图所示,角色的最终位置为 6。反之,如果先使用第 2 个镜子,再使用第 1 个镜子,角色的最终位置为 -6。因此,本例的答案是 6。

限制条件

  • 所有给定的数都是整数。

子任务

  1. (7 分)
  2. (25 分) 是偶数,且
  3. (19 分) 是偶数,且
  4. (49 分) 无额外限制条件。