- *Ignatius and the Princess IV
- Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32767 K (Java/Others)
- Total Submission(s): 21309 Accepted Submission(s): 8838
- Problem Description
- "OK, you are not too bad, em... But you can never pass the next test." feng5166 says.
- "I will tell you an odd number N, and then N integers. There will be a special integer among them, you have to tell me which
- integer is the special one after I tell you all the integers." feng5166 says.
- "But what is the characteristic of the special integer?" Ignatius asks.
- "The integer will appear at least (N+1)/2 times. If you can't find the right integer, I will kill the Princess, and you will
- be my dinner, too. Hahahaha....." feng5166 says.
- Can you find the special integer for Ignatius?
- Input
- The input contains several test cases. Each test case contains two lines. The first line consists of an odd integer
- N(1<=N<=999999) which indicate the number of the integers feng5166 will tell our hero. The second line contains the N integers.
- The input is terminated by the end of file.
- Output
- For each test case, you have to output only one line which contains the special number you have found.
- Sample Input
- 5
- 1 3 2 3 3
- 11
- 1 1 1 1 1 5 5 5 5 5 5
- 7
- 1 1 1 1 1 1 1
- Sample Output
- 3
- 5
- 1
题是我搬别人的
代码是自己写了一晚弄出来的,小白一个
#include<stdio.h>
#include<memory.h>//包含memset函数const int MAX=1000000;
int a[MAX];
int main()
{
int n;
while(~scanf("%d",&n))
{ memset(a,0,sizeof(a));//初始化数组
int m=0,j=0;
for(int i=0;i<n;i++)
{
scanf("%d",&j);
if(j>m)
m=j;//为了方便下面检索需要测到数组中a[某] ,节省时间
a[j]++;//a[j]中存的是j出现的次数
}
for(j=1;j<=m;j++)
{
if(a[j]>=(n+1)/2)
{printf("%d\n",j);break;}//既然已经有一个了,且一定仅有一个,直接跳出
}
}
return 0;
}