#include <algorithm>
#include <iostream>
#include <vector>
std::size_t getIndexFor(const std::vector<int>& v, int input)
{
auto it = std::lower_bound(v.begin(), v.end(), input);
if (it != v.begin() && (it == v.end() || *it != input)) {
--it;
}
return std::distance(v.begin(), it);
}
int main()
{
const std::vector<int> v = { 0, 4 };
for (int i : {0, 1, 2, 3, 4, 5}) {
std::cout << getIndexFor(v, i) << ":" << i << std::endl;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RkOjpzaXplX3QgZ2V0SW5kZXhGb3IoY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgdiwgaW50IGlucHV0KQp7CiAgICBhdXRvIGl0ID0gc3RkOjpsb3dlcl9ib3VuZCh2LmJlZ2luKCksIHYuZW5kKCksIGlucHV0KTsKICAgIGlmIChpdCAhPSB2LmJlZ2luKCkgJiYgKGl0ID09IHYuZW5kKCkgfHwgKml0ICE9IGlucHV0KSkgewogICAgICAgIC0taXQ7CiAgICB9CiAgICByZXR1cm4gc3RkOjpkaXN0YW5jZSh2LmJlZ2luKCksIGl0KTsKfQoKaW50IG1haW4oKQp7CiAgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+IHYgPSB7IDAsIDQgfTsKCiAgICBmb3IgKGludCBpIDogezAsIDEsIDIsIDMsIDQsIDV9KSB7CiAgICAgICAgc3RkOjpjb3V0IDw8IGdldEluZGV4Rm9yKHYsIGkpIDw8ICI6IiA8PCBpIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfQo=