#include <iostream>
#include <map>
#include <boost/optional.hpp>
int main()
{
const std::map<int, boost::optional<double>> distanceToIdMap =
{
{0, boost::none},
{100, 8.4},
{200, 7.2},
{300, 3.6},
{400, boost::none},
{600, 4.1}
};
for (auto v : {-10, 50, 99, 100, 101, 250, 350, 500, 601})
{
auto it = distanceToIdMap.lower_bound(v);
if (it != distanceToIdMap.end() && it->second) {
std::cout << v << " " << *it->second << std::endl;
} else {
std::cout << v << " None" << std::endl;
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKI2luY2x1ZGUgPGJvb3N0L29wdGlvbmFsLmhwcD4KCmludCBtYWluKCkKewogICAgY29uc3Qgc3RkOjptYXA8aW50LCBib29zdDo6b3B0aW9uYWw8ZG91YmxlPj4gZGlzdGFuY2VUb0lkTWFwID0KICAgIHsKICAgIAl7MCwgYm9vc3Q6Om5vbmV9LAogICAgICAgIHsxMDAsIDguNH0sCiAgICAgICAgezIwMCwgNy4yfSwKICAgICAgICB7MzAwLCAzLjZ9LAogICAgICAgIHs0MDAsIGJvb3N0Ojpub25lfSwKICAgICAgICB7NjAwLCA0LjF9CiAgICB9OwoKICAgIGZvciAoYXV0byB2IDogey0xMCwgNTAsIDk5LCAxMDAsIDEwMSwgMjUwLCAzNTAsIDUwMCwgNjAxfSkKICAgIHsKICAgIAlhdXRvIGl0ID0gZGlzdGFuY2VUb0lkTWFwLmxvd2VyX2JvdW5kKHYpOwogICAgCQogICAgCWlmIChpdCAhPSBkaXN0YW5jZVRvSWRNYXAuZW5kKCkgJiYgaXQtPnNlY29uZCkgewogICAgCQlzdGQ6OmNvdXQgPDwgdiA8PCAiICIgPDwgKml0LT5zZWNvbmQgPDwgc3RkOjplbmRsOwogICAgCX0gZWxzZSB7CiAgICAJCXN0ZDo6Y291dCA8PCB2IDw8ICIgTm9uZSIgPDwgc3RkOjplbmRsOwogICAgCX0KICAgIH0KfQ==