题目描述
花园小学正在进行紧张刺激的运动会!每个班级都有一个独一无二的数字。 现在正是 10000 米短跑比赛的现场。许多班级的运动员们已经纷纷准备就绪。正 等一声令下,开始比赛。10000 米短跑比赛有一个传统,就是每当一个运动员跑 到终点时,都会大声喊出他的班级号,来显示一种荣耀。现在,给出 n 个数,代 表通过终点的 n 个人所喊出的班级号,你需要统计有多少班级在这场比赛中参赛 了正好 k 个人,计算出在这些班级中,获得第一名的选手是哪个班级的。输出他 所在的班级号。
假设每一个参加比赛的人都通过了终点。
输入
每组数据第一行, n, k。
代表有 n 个人,要求保留 k 个人的班。 (n,k<=1000000) 接下来一行 n 个数,依次代表选手通过终点所喊出的班级号(a[1]代表第一 个通过终点的选手喊出的班级号,依次类推)。
(a[i]<=1000000) 处理到文件结束。
输出
每行一个数。
若没有班级通过 k 人,输出-1。
样例输入
5 2
4 2 3 2 3
样例输出
2
知识点
- 巧妙的设置标记
注意情况
无
代码片段
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
long long int n,k,m,p=0;
long long int b[1000001]={0},a[1000001]={0};
while(cin>>n>>k)
{
for(int i=0;i<n;i++)
{
cin>>a[i];
b[a[i]]++;
}
for(int i=0;i<n;i++)
{
if(b[a[i]]==k)
{
p=1;
cout<<a[i]<<endl;
break;
}
}
if(p==0) cout<<"-1"<<endl;
p=0;
memset(b,0,sizeof(b));
memset(a,0,sizeof(a));
}
return 0;
}
共同进步呀😊