#include <algorithm>
#include <iostream>
#include <vector>
std::size_t getIndexFor(const std::vector<int>& v, int input)
{
auto it = std::find_if(v.begin(), v.end(), [&](int e){ return e > input;});
if (it == v.begin()) {
throw std::runtime_error("input not handled");
}
--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;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RkOjpzaXplX3QgZ2V0SW5kZXhGb3IoY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgdiwgaW50IGlucHV0KQp7CiAgICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lmKHYuYmVnaW4oKSwgdi5lbmQoKSwgWyZdKGludCBlKXsgcmV0dXJuIGUgPiBpbnB1dDt9KTsKICAgIGlmIChpdCA9PSB2LmJlZ2luKCkpIHsKICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoImlucHV0IG5vdCBoYW5kbGVkIik7CiAgICB9CiAgICAtLWl0OwogICAgcmV0dXJuIHN0ZDo6ZGlzdGFuY2Uodi5iZWdpbigpLCBpdCk7Cn0KCmludCBtYWluKCkKewogICAgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiB2ID0geyAwLCA0fTsKCiAgICBmb3IgKGludCBpIDogezAsIDEsIDIsIDMsIDQsIDV9KSB7CiAgICAgICAgc3RkOjpjb3V0IDw8IGdldEluZGV4Rm9yKHYsIGkpIDw8ICI6IiA8PCBpIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfQo=