yokobuttonの不定期で競技プログラミングをするブログ

不定期で解けた競技プログラミングコンテストの問題を載せています。

AtCoder Beginner Contest 245 B - Mex

問題の要約
 長さNの整数からなる数列A=(A1,...,AN)が与えられる。
 A1,...,ANに含まれない最小の非負整数を求めよ。
制約
 1<=N<=2000
 0<=Ai<=2000
入力
 N
 A1 ... AN
考え方
 1,vector<bool>でAiが含まれるかどうかを管理する。
 2,vector<bool>を0から確認していけば最小の非負整数を求めることができる。

実際のプログラム
#include<iostream>
#include<vector>

using namespace std;

int main(){
  int N;
  cin >> N;
  
  vector<bool> A(2000+1,false);
  for(int i = 0; i < N; i++){
    int Ai;
    cin >> Ai;
    A[Ai] = true;
  }
  
  int ans = 0;
  for(int i = 0; i < 2000+1; i++){
    if(!A[i]){
      ans = i;
      break;
    }
  }
  
  cout << ans << endl;
  
  return 0;
}