您的位置:首页 > 其它

Ignatius and the Princess IV

2016-03-05 22:50 495 查看

Ignatius and the Princess IV

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32767 K (Java/Others)
Total Submission(s): 24410 Accepted Submission(s): 10261


[align=left]Problem Description[/align]
"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?

[align=left]Input[/align]
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.

[align=left]Output[/align]
For each test case, you have to output only one line which contains the special number you have found.

[align=left]Sample Input[/align]

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

[align=left]Sample Output[/align]

3 5 1

本来想排序的,中间那个数肯定是要求的数, 但是我自己写了冒泡排序时间超出了,调用c++的库函数时间也超出了,所以网上搜了这个方法很好

#include<stdio.h>
int main()
{
int n;
int i,j=0;

int num,num1;
while(scanf("%d",&n)!=EOF)//输入每个测试用例中数据元素的个数
{
int a[32768]={0};
num1=(n+1)/2;//至少出现num1次

for(i=0;i<n;i++)//时间复杂度n
{
scanf("%d",&j);
a[j]++;
if(a[j]>=num1)
num=j;
}
printf("%d\n",num);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: