#include <stdio.h>
const int N=300005;
int n, m, i, j, k, f[N];
int main(){
scanf("%d%d", &n, &m);
for(i=1; i<=n; i++){
scanf("%d", &k);
if(k < N) f[k]++;
}//显然,答案在N以内,超出去的必用不到。
for(i=0; i<m; i++){
if(!f[i]) break;
}
printf("%d\n", i);
return 0;
}
STL也可以:
#include <bits/stdc++.h>
int n, m, i, j, k;
std::map <int, int> f;
int main(){
scanf("%d%d", &n, &m);
for(i=1; i<=n; i++){
scanf("%d", &k);
f[k]++;
}
for(i=0; i<m; i++){
if(!f[i]) break;
}//贪心选择不同的最小数字,第一个未出现即答案
printf("%d\n", i);
return 0;
}