【题意】:输入一串数字,在这串数字中招special number数字,这个数字至少出现了(N+1)/2次。
思路:qsort排序后,数出现的次数。注意0和最后。
【代码:AC】
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cstdlib>
#include <cstdio>
using namespace std;
#define MAX 1000000+2
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int num[MAX];
int main()
{
int n = 0;
while (cin >> n)
{
int i = 0, c = (n+1)/2;
int cnt = 1;
memset(num, 0, sizeof(num));
for (i = 0; i < n; i++)
cin >> num[i];
qsort(num, n, sizeof(int), cmp);
if (1 == n)
cout << num[0] << endl;
for (i = 1; i < n; i++)
{
if (num[i] == num[i-1])
cnt++;
else
{
if(cnt >= c)
{
cout << num[i-1] << endl;
break;
}
cnt = 1;
}
if (i == n-1 && cnt >= c)
cout << num[n-1] << endl;
}
}
return 0;
}