问题 3770 --你能找到吗

3770: 你能找到吗★★★

时间限制: 2 Sec  内存限制: 128 MB
提交: 137  解决: 36
[提交][状态][命题人:]

题目描述

现在,老师给了你一个长度为n的数组(a1, a2, a3, ... , an),要求你选择一个非负整数D(即D 0),然后,对于数组中的每一个元素ai,你可以进行以下3种操作中的一个(注意:只能进行一次操作):

(1)把这个数加上D,即ai = ai + D

(2)把这个数减去D,即ai = ai - D

(3)不改变ai,即ai = ai

因为进行操作是需要花费的代价仅与D有关,D越大,花费的钱就越多。现在老师有事走不开,所以找你来帮忙找一个最小的非负整数D,使得数组中的每一个元素在经过上述3种操作中的一个之后,每个元素都相等。

如果你能找到,请输出一个最小的非负整数D,否则,请输出-1以告诉老师这个任务是不可能完成的。

例如,对于数组[28],最小的D = 3,因为2 + D = 6 = 8 - D

输入

共两行,第一行一个n1 n 100),代表数组的长度。

       第二行共n个数,代表a1, a2, a3, ... , an1 an 100)。

输出

输出一个最小的非负整数D

如果找不到这样的D,输出-1

样例输入
Copy
6
1 4 4 7 4 1
样例输出
Copy
3

提示

数组中的每个元素只能进行一次操作。

来源

[提交][状态]