给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。
标签:data 数列 style bsp des sans ace text tchar
给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。
第1行一个正整数n。
第2行n个正整数用空格隔开。
一行一个正整数表示那个众数。
100%的数据,n<=500000,数列中每个数<=maxlongint。
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #define qread(x)x=read(); using namespace std; inline int read() { int f=1,x=0;char ch; while(ch<‘0‘ || ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} while(ch>=‘0‘ && ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} return f*x; } int n,s,c; int main() { qread(n);c=0; while(n--) { int a; qread(a); if(s==a)c++; else { c--; if(c<=0)c=1,s=a; } } printf("%d\n",s); return 0; }
标签:data 数列 style bsp des sans ace text tchar
原文地址:http://www.cnblogs.com/CHerish_OI/p/7899036.html