题目大意:
一共n辆车,然后爱丽丝选择了一个编号m,给出一个长度为n的序列,让你在从中看是否能够找出一种编号k,使得无论在任何时刻,当前k的数量都比m的数量大,有的话随机输出一个正确的就OK,否则输出-1
题目思路:我们用一个桶装,但不是每个都装,只有当前k的数量大于m的数量的时候,我们才把k装进桶里,这样最后我们从头开始找的时候只要找到某个桶里的数量大于m桶里的数量就可以了,如果找不到输出-1
AC代码
#include<bits/stdc++.h>
using namespace std;
int a[1000001];
int main(){
int n,k;
scanf("%d%d", &n, &k);
for(int i = 0; i < n; i++){
int x;
scanf("%d", &x);
if(x == k){
a[k]++;
}
else{
if(a[x] >= a[k])
a[x]++;
}
}
for(int i = 1; i <= 1e6; i++){
if(a[i] >= a[k] && i != k){
printf("%d\n",i);
return 0;
}
}
printf("-1\n");
}