思路:排序之后,要想是中间数,如果是奇数个,那就只可能是中间的那一个数,如果共偶数个,那么中间的两个数必然相等,所以只需要判断a[n/2]处的数是不是中间数就可以了。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
int a[n];
int count1=0,count2=0;
for(int i=0;i<n;i++)
{
cin >> a[i];
}
sort(a,a+n);
for(int i=0;i<n;i++)
{
if(a[i]<a[n/2]) count1++;
else if(a[i]>a[n/2]) count2++;
}
if(count1==count2) cout << a[n/2] << endl;
else cout << "-1" << endl;
return 0;
}