思路:排序,然后判断中位数是否符合条件,用双指针定位
#include<iostream>
#include<sstream>
#include<cstdio>
#include<string>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
#include<algorithm>
using namespace std;
void printvec(vector<int>& vec){
printf("%d",vec[0]);
for(int i=1;i<vec.size();i++){
printf(" %d",vec[i]);
}
printf("\n");
}
//排序,然后判断中位数是否符合条件,用双指针定位
int main() {
//freopen("d:\\input.txt","r",stdin);
int n;
cin>>n;
vector<int> vec(n);
for(int i=0;i<n;i++){cin>>vec[i];}
sort(vec.begin(),vec.end());
//printvec(vec);
int mid=n/2;
int lo=mid,hi=mid;//(lo,hi)之内的数值均与vec[mid]相同
while(lo>=0&&vec[lo]==vec[mid])lo--;
while(hi<n&&vec[hi]==vec[mid])hi++;
//cout<<lo<<" "<<hi<<endl;
if(lo+1==n-hi)cout<<vec[mid]<<endl;
else cout<<-1<<endl;
return 0;
}