测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A8907. Building Permutation

编程题 普及/提高-

题目描述

Permutation $p$ is an ordered set of integers $p_{1},p_{2},...,p_{n}$ , consisting of $n$ distinct positive integers, each of them doesn't exceed $n$ . We'll denote the $i$ -th element of permutation $p$ as $p_{i}$ . We'll call number $n$ the size or the length of permutation $p_{1},p_{2},...,p_{n}$ .

You have a sequence of integers $a_{1},a_{2},...,a_{n}$ . In one move, you are allowed to decrease or increase any number by one. Count the minimum number of moves, needed to build a permutation from this sequence.

输入格式

The first line contains integer $n$ ( $1<=n<=3·10^{5}$ ) — the size of the sought permutation. The second line contains $n$ integers $a_{1},a_{2},...,a_{n}$ ( $-10^{9}<=a_{i}<=10^{9}$ ).

输出格式

Print a single number — the minimum number of moves.

Please, do not use the %lld specifier to read or write 64-bit integers in C++. It is preferred to use the cin, cout streams or the %I64d specifier.

输入输出样例

输入 #1
2
3 0
输出 #1
2
输入 #2
3
-1 -1 2
输出 #2
6

说明/提示

In the first sample you should decrease the first number by one and then increase the second number by one. The resulting permutation is $(2,1)$ .

In the second sample you need 6 moves to build permutation $(1,3,2)$ .
上一题 去做题 下一题