#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <list>
using namespace std;
#define R read()
#define GC getchar()
#define ll long long
#define ull unsigned long long
#define INF 0x7fffffff
#define LLINF 0x7fffffffffffffff
ll read(){
ll s=0,f=1;
char c=GC;
while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-f;c=GC;}
while(c>=‘0‘&&c<=‘9‘){s=s*10+c-‘0‘;c=GC;}
return s*f;
}
int n,m[130010];
int cnt,t;
int flag;//是0表示一个获胜的也没有,就要输出"No such person."。
//是1表示有获胜的。
int main(){
n=R;
for(int i=1;i<=n;++i){
m[i]=R;
}
sort(m+1,m+n+1);//排序
t=m[1];cnt=1;//先记录一下
for(int i=2;i<=n;++i){//从前往后遍历,因为第一位已经记录了,所以从下标2开始
if(m[i]==t){//如果和前面一样,那么计数+1
++cnt;
}else{//不一样,说明到头了
if(cnt>n/4){//看记录的个数是否超过了n/4
flag=1;//标记
printf("%d\n",t);
}
t=m[i];cnt=1;//再记录下一个数
}
}
if(cnt>n/4){//再判断一下,因为在遍历的时候最后并没有到头
flag=1;
printf("%d\n",t);
}
if(flag==0){
printf("No such person.\n");
}
return 0;
}
原文:https://www.cnblogs.com/FUXyao/p/12876087.html