2
推荐指数:※
来源:http://ac.jobdu.com/problem.php?pid=1370
跟http://blog.csdn.net/zhu_liangwei/article/details/9734671有点类似。
但是输入中不肯定存在超过一半的数,通过map计数。
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<string.h> #include<map> using namespace std; int main(){ int n; while(~scanf("%d",&n)){ long long tmp,curr,sum; map<long,int> count; scanf("%lld",&curr); count[curr]++; sum=1; for(int i=1;i<n;i++){ scanf("%lld",&tmp); count[tmp]++; if(tmp==curr) sum++; else{ if(0==sum){ curr=tmp; sum=1; } else sum--; } } if(count[curr]>n/2||n==1) printf("%lld\n",curr); else printf("-1\n"); } return 0; }