第 1 题 镜子 (mirror)
CSP-S 复赛模拟赛 24 · 时间限制 1.0 s · 空间限制 256 MB · 119 个测试点 · 全文比较(过滤行末空格及文末回车)
本题使用文件输入输出:输入文件 mirror.in,输出文件 mirror.out。
题目描述
你正在数轴上进行游戏。你的角色位于位置 s,数轴上放置了 N 面镜子。每面镜子的位置从左到右可表示为 A1≤A2≤⋯≤AN。同一位置可能有多个镜子。
你可以使用镜子改变角色的位置。使用镜子时,角色的位置会移动到关于该镜子位置点对称的位置。也就是说,当你的角色位于位置 a 时,使用位于位置 b 的镜子,角色会移动到位置 2b−a。
N 面镜子必须恰好各使用一次。也就是说,不能忽略某面镜子不使用,也不能把某面镜子使用两次以上。除了必须把每面镜子都恰好使用一次之外,镜子可以按你想要的任意顺序使用。
在这个条件下,请计算并输出角色位置的最大值。
输入格式
第一行给出镜子的数量 N 与你的位置 s,以空格分隔。
第二行给出各镜子的位置 A1,A2,⋯,AN,以空格分隔。
输出格式
输出在把 N 面镜子全部恰好使用一次后,角色最终位置的最大值。答案可能很大,请注意在某些编程语言中可能需要使用 64 位整数变量(long long)。
样例
样例 1
输入:
输出:
说明:若先使用第 1 面镜子再使用第 2 面镜子,角色最终位置为 6。反之,若先使用第 2 面镜子再使用第 1 面镜子,角色最终位置为 −6。因此该样例答案为 6。
样例 2
输入:
输出:
样例 3
输入:
文本
9 9
0 1 3 3 4 5 8 9 10
输出:
样例 4
输入:
文本
1 1000000000
-999999999
输出:
数据范围
- 所有给出的数均为整数。
- 1≤N≤200000。
- −109≤s≤109。
- −109≤A1≤A2≤⋯≤AN≤109。
子任务
- (7 分)N≤2。
- (25 分)N 为偶数,且 A1=A2=⋯=AN/2<s<AN/2+1=AN/2+2=⋯=AN。
- (19 分)N 为偶数,且 AN/2<s<AN/2+1。
- (49 分)无附加约束。