#CTR0022. 排列 - 1

排列 - 1

题目描述

江月诗拿到了一个数组,他可以进行任意次以下操作:选择两个元素,使得其中一个加 11 ,另一个减 11

江月诗希望最终的数组变成一个排列,请你帮助他确定这能否实现。如果可以实现的话,还需要求出最小操作次数。

长度为 nn 的排列是由 1n1 \sim nnn 个整数、按任意顺序组成的数组,其中每个整数恰好出现一次。例如,{2,3,1,5,4}\{2,3,1,5,4\} 是一个长度为 55 的排列,而 {1,2,2}\{1,2,2\}{1,3,4}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

输入格式

第一行输入一个整数 nn (1n105)(1 \leq n \leq 10^5) 代表数组中的元素数量。

第二行输入 nn 个整数 a1,a2,,ana_1,a_2,\dots,a_n (109ai109)(-10^9 \leq a_i \leq 10^9) 代表数组元素。

输出格式

如果无法生成排列,直接输出 1-1;否则,输出一个整数,代表最小的操作次数。

输入样例#1

2
3 4

输出样例#1

-1

输入样例#2

4
0 3 4 3

输出样例#2

1

说明/提示

在第一个样例中,长度为 22 的排列有且仅有 {1,2}\left\{1,2\right\}{2,1}\left\{2,1\right\} 两种,显然小红无论如何都无法将给定的数组变成这两种排列中的任意一种。

在第二个样例中,其中一种操作方式是同时将第一个元素加 11、第四个元素减 11,得到 $\left\{{\color{orange}{\bf 1}},3,4,{\color{orange}{\bf 2}}\right\}$,这是一个合法的排列。操作方案不唯一。