BZOJ 2456: mode(巧取众数)

来源:互联网 发布:js获取frame 编辑:程序博客网 时间:2024/06/07 11:44

2456: mode

Time Limit: 1 Sec  Memory Limit: 1 MB
Submit: 5043  Solved: 2110
[Submit][Status][Discuss]

Description

给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。

Input

第1行一个正整数n。
第2行n个正整数用空格隔开。

Output

    一行一个正整数表示那个众数。

Sample Input

5
3 2 3 1 3

Sample Output

3

HINT

100%的数据,n<=500000,数列中每个数<=maxlongint。



zju2132 The Most Frequent Number

Source


#include<map>#include<math.h>#include<stdio.h>  #include<string.h>  #include<stdlib.h>  #include<algorithm>  using namespace std;#define maxn 50005int  main(void){int n,i;long long x,ans=0,num=0;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%lld",&x);if(x==ans)num++;elsenum--;if(num<0)ans=x,num=1;}printf("%lld\n",ans);return 0;}