#include <iostream>
#include <vector>
using namespace std;
int find_gap(std::vector<int> const& vec) {
std::vector<bool> gap(vec.size()+1, false);
gap[0] = true; // special case - we want results >= 1.
for (auto index : vec) {
if (index < gap.size()) {
gap[index] = true;
}
}
size_t unused_value = 0;
for (; unused_value < gap.size(); ++unused_value) {
if (!gap[unused_value]) {
break;
}
}
return unused_value;
}
int main() {
std::cout << find_gap({1,2,4,5}) << std::endl;
std::cout << find_gap({2}) << std::endl;
std::cout << find_gap({1,2,3}) << std::endl;
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGZpbmRfZ2FwKHN0ZDo6dmVjdG9yPGludD4gY29uc3QmIHZlYykgewoJc3RkOjp2ZWN0b3I8Ym9vbD4gZ2FwKHZlYy5zaXplKCkrMSwgZmFsc2UpOwoJZ2FwWzBdID0gdHJ1ZTsgLy8gc3BlY2lhbCBjYXNlIC0gd2Ugd2FudCByZXN1bHRzID49IDEuCglmb3IgKGF1dG8gaW5kZXggOiB2ZWMpIHsKCQlpZiAoaW5kZXggPCBnYXAuc2l6ZSgpKSB7CgkJCWdhcFtpbmRleF0gPSB0cnVlOwoJCX0KCX0KCXNpemVfdCB1bnVzZWRfdmFsdWUgPSAwOwoJZm9yICg7IHVudXNlZF92YWx1ZSA8IGdhcC5zaXplKCk7ICsrdW51c2VkX3ZhbHVlKSB7CgkJaWYgKCFnYXBbdW51c2VkX3ZhbHVlXSkgewoJCQlicmVhazsKCQl9Cgl9CglyZXR1cm4gdW51c2VkX3ZhbHVlOwp9CgppbnQgbWFpbigpIHsKCXN0ZDo6Y291dCA8PCBmaW5kX2dhcCh7MSwyLDQsNX0pIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCBmaW5kX2dhcCh7Mn0pIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCBmaW5kX2dhcCh7MSwyLDN9KSA8PCBzdGQ6OmVuZGw7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==