別解

By
tomo8

答えはたかだか 100001( -1 でないとき)なので、答えの候補をすべて set に入れ、AA に含まれる数をすべて取り除き、その後 set に入っている最小値を出力すればよいです。
std::set では、通常データは値の昇順で保管されているので、先頭の要素を出力すればよいです(イテレータを使うと書きやすいです)。

解答 (C++)

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin >> n;
	vector<int> v(n);
	for (int &k : v) cin >> k;
	set<int> e;
	for (int i = 0; i <= 300000; i++) {
		e.insert(i);
	}
	for (int k : v) {
		if (e.count(k)) e.erase(k);
	}
	cout << *e.begin() << endl;
}