题目 20375

镜子

查看题解 ↗GitHub ↗如何评测
题号
20375
时间限制
1000 ms
内存限制
256 MB
标签
比赛CSP-S
来源
CSP-S 国外模拟赛 24 - T1

第 1 题 镜子 (mirror)

CSP-S 复赛模拟赛 24 · 时间限制 1.0 s · 空间限制 256 MB · 119 个测试点 · 全文比较(过滤行末空格及文末回车)

本题使用文件输入输出:输入文件 mirror.in,输出文件 mirror.out。

题目描述

你正在数轴上进行游戏。你的角色位于位置 ss,数轴上放置了 NN 面镜子。每面镜子的位置从左到右可表示为 A1≤A2≤⋯≤ANA_1 \le A_2 \le \cdots \le A_N。同一位置可能有多个镜子。

你可以使用镜子改变角色的位置。使用镜子时,角色的位置会移动到关于该镜子位置点对称的位置。也就是说,当你的角色位于位置 aa 时,使用位于位置 bb 的镜子,角色会移动到位置 2b−a2b - a。

NN 面镜子必须恰好各使用一次。也就是说,不能忽略某面镜子不使用,也不能把某面镜子使用两次以上。除了必须把每面镜子都恰好使用一次之外,镜子可以按你想要的任意顺序使用。

在这个条件下,请计算并输出角色位置的最大值。

输入格式

第一行给出镜子的数量 NN 与你的位置 ss,以空格分隔。

第二行给出各镜子的位置 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N,以空格分隔。

输出格式

输出在把 NN 面镜子全部恰好使用一次后,角色最终位置的最大值。答案可能很大,请注意在某些编程语言中可能需要使用 64 位整数变量(long long)。

样例

样例 1

输入:

文本
2 0
-1 2

输出:

文本
6

说明:若先使用第 1 面镜子再使用第 2 面镜子,角色最终位置为 6。反之,若先使用第 2 面镜子再使用第 1 面镜子,角色最终位置为 −6-6。因此该样例答案为 6。

样例 2

输入:

文本
6 3
-4 -2 2 6 8 9

输出:

文本
57

样例 3

输入:

文本
9 9
0 1 3 3 4 5 8 9 10

输出:

文本
49

样例 4

输入:

文本
1 1000000000
-999999999

输出:

文本
-2999999998

数据范围

  • 所有给出的数均为整数。
  • 1≤N≤200 0001 \le N \le 200\,000。
  • −109≤s≤109-10^9 \le s \le 10^9。
  • −109≤A1≤A2≤⋯≤AN≤109-10^9 \le A_1 \le A_2 \le \cdots \le A_N \le 10^9。

子任务

  1. (7 分)N≤2N \le 2。
  2. (25 分)NN 为偶数,且 A1=A2=⋯=AN/2<s<AN/2+1=AN/2+2=⋯=ANA_1 = A_2 = \cdots = A_{N/2} < s < A_{N/2+1} = A_{N/2+2} = \cdots = A_N。
  3. (19 分)NN 为偶数,且 AN/2<s<AN/2+1A_{N/2} < s < A_{N/2+1}。
  4. (49 分)无附加约束。

数据下载

题目 20375 的公开数据

正在读取文件列表…

常用命令

题目 20375 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。