撒马尔罕著名的雷吉斯坦广场内有 $N$ 座纪念碑,它们排列成一条穿过广场中心的直线。这些纪念碑的编号从 $0$ 到 $N-1$。编号为 $i$($0\le i < N$)的纪念碑初始位于整数坐标 $X[i]$ 处,广场中心位于坐标 $0$。
建筑师要求建筑布局关于中心完美对称。他们希望通过移动其中一些(数量可能为零)纪念碑,使得最终的建筑布局关于坐标 $0$ 对称,可以形式化描述如下:
- 所有纪念碑必须位于整数坐标处。
- 每个整数坐标可以放置零个、一个或多个纪念碑。
- 对于任意整数 $x > 0$,位于坐标 $x$ 处的纪念碑数量必须等于位于坐标 $-x$ 处的纪念碑数量。坐标 $0$ 上可以放置任意数量的纪念碑(数量可能为零)。
然而,有 $M$ 座古老纪念碑年久失修导致无法移动。它们的编号为 $P[0],P[1],\ldots,P[M-1]$。这 $M$ 座纪念碑必须停留在其原始坐标上,其余 $N-M$ 座纪念碑可以移动到任意整数坐标处。在移动过程中,纪念碑之间互不干扰。
将一座纪念碑从坐标 $a$ 移动至坐标 $b$ 的代价为 $|a-b|$。总代价定义为所有被移动纪念碑的代价之和。
你的任务是求出使所有纪念碑的建筑布局关于坐标 $0$ 对称的最小总代价;如果无法在给定约束下实现对称,则判定为无解。
实现细节
你要实现以下函数:
long long get_cost(std::vector<int> X, std::vector<int> P);
- $X$:长度为 $N$ 的非递减数组,给出纪念碑的初始坐标。
- $P$:长度为 $M$ 的严格递增数组,给出古老纪念碑的编号。
- 对于每个测试用例,该函数恰好被调用一次。
- 该函数应返回一个整数:使建筑布局对称的最小总代价;如果不可能,则返回 $-1$。
约束条件
对于所有测试数据:
- $1\le N\le 500000$;
- $0\le M\le N$;
- $-10^9\le X[0]\le X[1]\le\cdots\le X[N-1]\le 10^9$;
- $0\le P[0] < P[1] < \cdots < P[M-1] < N$。
子任务
| 子任务 | 分数 | 额外的约束条件 |
|---|---|---|
| $1$ | $3$ | $M=N$ |
| $2$ | $4$ | $M=0$ |
| $3$ | $5$ | 对于所有满足 $0\le j < M$ 的 $j$,均有 $X[P[j]] < 0$ |
| $4$ | $6$ | $N\le 10$ |
| $5$ | $5$ | $N\le 19$ |
| $6$ | $5$ | $N\le 32$ |
| $7$ | $13$ | $N\le 200$ |
| $8$ | $17$ | $N\le 4000$ |
| $9$ | $13$ | $M\le 4000$ |
| $10$ | $29$ | 没有额外的约束条件 |
例子
例 1
考虑以下调用:
get_cost({-3, -2, 1, 3}, {1, 2})
纪念碑的初始建筑布局如下图所示。

共有 $N=4$ 座纪念碑,初始坐标分别为 $[-3,-2,1,3]$。古老纪念碑的编号为 $P[0]=1$ 和 $P[1]=2$。即坐标为 $X[P[0]]=-2$ 和 $X[P[1]]=1$ 的纪念碑不能移动,其余坐标为 $-3$ 和 $3$ 的纪念碑可以移动。
为使总代价最小且达到对称,我们需要如下移动纪念碑:
- 将坐标为 $-3$ 的纪念碑移至 $-1$,代价为 $|(-3)-(-1)|=2$。
- 将坐标为 $3$ 的纪念碑移至 $2$,代价为 $|3-2|=1$。
移动后布局变为对称。

总移动代价为 $2+1=3$,因此该函数应返回 $3$。
例 2
考虑以下调用:
get_cost({2, 2, 2, 3}, {})
此处 $M=0$,表示没有古老纪念碑,所有纪念碑均可移动。
一种最小总代价的解法是将所有纪念碑移至坐标 $0$。每座纪念碑的移动代价为:
- 纪念碑 $0,1,2$ 的代价为 $|2-0|=2$。
- 纪念碑 $3$ 的代价为 $|3-0|=3$。
总移动代价为 $2+2+2+3=9$。因此该函数应返回 $9$。注意,存在其他总代价相同的解法。
例 3
考虑以下调用:
get_cost({1, 2, 3, 4}, {0, 1, 2, 3})
全部 $4$ 座纪念碑均为古老纪念碑,无法移动。
由于它们的坐标均为正数,无法使建筑布局关于 $0$ 对称。
因此该函数应返回 $-1$。
评测程序示例
输入格式:
N M
X[0] X[1] ... X[N-1]
P[0] P[1] ... P[M-1]
注意,如果 $M=0$,则第三行可能为空行。
输出格式:
C
其中,$C$ 为 get_cost 的返回值。
时间限制:$\texttt{1s}$
空间限制:$\texttt{2G}$

鄂公网安备 42010202000505 号