Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux编程 > » 正文

HDU 1029 Ignatius and the Princess IV

来源: qq413785523 分享至:

 

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

 

题意:

先输入一个数n,接下来一行输入n个数,然后找出相同的数个数大于(n+1)/2的数.

代码:

#include<stdio.h>
#include<stdlib.h>
int comp(const void *a,const void *b)
{
    return *(int *)a-*(int *)b;
}
int a[1000000];//数组定义的很大的时候在全局定义
int main()
{
    int n,i;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        qsort(a,n,sizeof(int),comp);
        printf("%d\n",a[(n-1)/2]);//求中位数
    }
    return 0;
}

 

分析:

很水的一道题啊,求比(n+1)/2还多的数,这个数排序完以后肯占所有的数一半还要多,没别的答案啦,就是中位数.

用冒泡排序的时候不知道会不会超时,但是自从学了快排以后,觉得比冒泡简单,速度还快没理由不用.

 


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史