题目大意:给出奇数个数,输出这些数中出现 (N+1)/2 次数的数。
解题思路:直接排序取中间的数即可,因为是奇数个数,出现 (N+1)/2 次的数已经超过一半,一定会出现在中位数上。
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cmath>
#include<string.h>
#include<string>
#include<queue>
#include<map>
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
const int INF = 0x3f3f3f3f;
const int NINF = -INF -1;
const int MAXN = 999999+5;
using namespace std;
int N;
int num[MAXN];
int main() {
while (scanf("%d", &N) != EOF) {
for (int i = 0; i < N; i++)
scanf("%d", &num[i]);
sort(num, num+N);
printf("%d\n", num[N/2]);
}
return 0;
}