http://codeforces.com/contest/1154/problem/B
"写下这个题的特别之处: 我当时处理逻辑很乱;问题有点复杂,你要考虑多种情况;还有数组做指针使用的技巧”
#include<cstdio>
#include<vector>
#include<algorithm>
#include<queue>
#include<iostream>
#include<cmath>
using namespace std;
int a[110];
int b[110];
int main(){
//freopen("in.txt","r",stdin);
int n;
scanf("%d",&n);
for(int i=0; i<n; i++){
scanf("%d",&a[i]);
b[a[i]]++;
}
int num=0;
for(int i=0;i<101;i++){
if(b[i]!=0) num++;
}
// printf("%d\n",num);
if(num==1){
printf("0\n");
}
else if(num==2){
sort(a,a+n);
int mm=0;
for(int i=0;i<n-1;i++){
mm=mm+a[i+1]-a[i];
}
if(mm%2!=0)
printf("%d\n",mm);
else printf("%d\n",mm/2);
}
else if(num==3){
int i=0;
int x=0,y=0,z=0;
for(;i<101;i++){
if(b[i]!=0){
x=i;
break;
}
}i++;
for(;i<101;i++){
if(b[i]!=0){
y=i;
break;
}
}i++;
for(;i<101;i++){
if(b[i]!=0){
z=i;
break;
}
}
if(y-x == z-y){
printf("%d\n",y-x);
}
else printf("-1\n");
}
else printf("-1\n");
return 0;
}