Ignatius and the Princess IV
- 题目大意
就是一串数,现在让你求出其中出现次数大于(n+1)/2的是哪个…
- 题解
排序A之。
- 代码
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n,a[1000005];
void qsort(int low,int high)
{
int i=low,j=high,mid=a[(i+j)/2];
while (i<=j)
{
while (a[i]<mid) i++;
while (a[j]>mid) j--;
if (i<=j)
{
int k;
k=a[i]; a[i]=a[j]; a[j]=k;
i++; j--;
}
}
if (low<j) qsort(low,j);
if (i<high) qsort(i,high);
}
int main()
{
while (scanf("%d",&n)!=EOF)
{
memset(a,0,sizeof(a));
for (int i=1;i<=n;i++) scanf("%d",&a[i]);
qsort(1,n);
int i=1,t=0,j=0;
while (i<=n)
{
j=i;
while (a[j]==a[i] && j<=n) j++;
if (j-i>=(n+1)/2)
{
printf("%d\n",a[i]);
break ;
}
i=j;
}
}
return 0;
}