问题背景
我们称一个长度为 n 的数列 p1,p2,…,pn 为一个排列当且仅当它包含 1 到 n 范围内的整数恰好一个,其中 n 称作排列 p 的大小。
题目描述
给定一个大小为 n 的数列 a1,a2,…,an,你可以对这个数列进行任意次操作,每次操作,你可以任选其中一个元素并将其数值增加或者减小 1。
你可以对同一个元素进行多次操作。
问:最少需要几次操作能将将数列 a 变成一个排列?
输入格式
第一行,一个整数 n(1≤n≤31˙05)。
第二行,n 个整数 a1,a2,…,an(−109≤ai≤109),两两之间以一个空格分隔。
输出格式
输出一个整数,表示将数列 a 变成一个排列的最少操作次数。
input1
2
3 0
output1
2
input2
3
-1 -1 2
output2
6
说明/提示
样例解释
- 样例1:一种最优方案是对 a1 进行 1 次 −1 操作,对 a2 进行一次 +1 操作,共 2 次操作得到排列 (2,1)
- 样例2:一种最优方案是对 a1 进行 2 次 +1 操作,对 a2 进行 4 次 +1 操作,共 6 次操作得到排列 (1,3,2)
数据规模与约定
- 对于 30% 的数据,n≤30,−103≤ai≤103
- 对于 60% 的数据,n≤3⋅103,−106≤ai≤106
- 对于 100% 的数据,n≤3⋅105,−109≤ai≤109