#include <iostream>
#include <vector>
int lessThan( const std::vector<double> &v, double value )
{
std::vector<double>::const_iterator first = v.begin();
int loc = 0;
while ( first != v.end() && !( *first < value ) )
{
++first;
++loc;
}
std::vector<double>::const_iterator max = first;
for ( ; first != v.end(); ++first )
{
if ( *first < value && *max < *first )
{
max = first;
++loc;
}
}
return loc;
}
int main()
{
std::vector<double> v;
v.push_back(1);
v.push_back(2.2);
v.push_back(3.5);
v.push_back(4);
double value = 3.0;
int loc = lessThan( v, value );
std::cout << "The maximum value less than " << value
<< " is " << loc << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IGxlc3NUaGFuKCBjb25zdCBzdGQ6OnZlY3Rvcjxkb3VibGU+ICZ2LCBkb3VibGUgdmFsdWUgKSAKewogICAgc3RkOjp2ZWN0b3I8ZG91YmxlPjo6Y29uc3RfaXRlcmF0b3IgZmlyc3QgPSB2LmJlZ2luKCk7CiAgICBpbnQgbG9jID0gMDsKCiAgICB3aGlsZSAoIGZpcnN0ICE9IHYuZW5kKCkgJiYgISggKmZpcnN0IDwgdmFsdWUgKSApIAogICAgewogICAgCSsrZmlyc3Q7CiAgICAJKytsb2M7CiAgICB9CgogICAgc3RkOjp2ZWN0b3I8ZG91YmxlPjo6Y29uc3RfaXRlcmF0b3IgbWF4ID0gZmlyc3Q7CgogICAgZm9yICggOyBmaXJzdCAhPSB2LmVuZCgpOyArK2ZpcnN0ICkKICAgIHsKICAgICAgICBpZiAoICpmaXJzdCA8IHZhbHVlICYmICptYXggPCAqZmlyc3QgKSAKICAgICAgICB7CiAgICAgICAgCW1heCA9IGZpcnN0OwogICAgICAgIAkrK2xvYzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGxvYzsKfQoKaW50IG1haW4oKSAKewogICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiB2OwogICAgdi5wdXNoX2JhY2soMSk7CiAgICB2LnB1c2hfYmFjaygyLjIpOwogICAgdi5wdXNoX2JhY2soMy41KTsKICAgIHYucHVzaF9iYWNrKDQpOwogICAgCiAgICBkb3VibGUgdmFsdWUgPSAzLjA7CgogICAgaW50IGxvYyA9IGxlc3NUaGFuKCB2LCB2YWx1ZSApOwoKICAgICAgICBzdGQ6OmNvdXQgPDwgIlRoZSBtYXhpbXVtIHZhbHVlIGxlc3MgdGhhbiAiIDw8IHZhbHVlCiAgICAgICAgICAgICAgICAgIDw8ICIgaXMgIiA8PCBsb2MgPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiAwOwp9