#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
typedef std::map<int,int>::iterator Iter;
Iter getIterator(std::map<int,int> &m, int val) {
Iter lb = m.upper_bound(val);
if((lb == m.begin()) || (lb == m.end())) {
return m.end();
}
Iter it = std::prev(lb);
if(it->first <= val && val <= it->second ) {
return it;
}
else{
return m.end();
}
}
int main() {
// your code goes here
std::map<int,int> mymap;
mymap[100]=200;
mymap[1000]=2000;
mymap[2000]=2500;
mymap[3000]=4000;
mymap[5000]=5100;
int a[4]{4500, 4000, 150, 0};
for(int x : a){
Iter it = getIterator(mymap, x);
if(it != mymap.end()){
cout << "Value " << x << " : Found in range: " << it->first << ", " << it->second <<endl;
}else{
cout << "Value " << x << " : NOT FOUND!" <<endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBzdGQ6Om1hcDxpbnQsaW50Pjo6aXRlcmF0b3IgSXRlcjsKCkl0ZXIgZ2V0SXRlcmF0b3Ioc3RkOjptYXA8aW50LGludD4gJm0sIGludCB2YWwpIHsKCUl0ZXIgbGIgPSBtLnVwcGVyX2JvdW5kKHZhbCk7CglpZigobGIgPT0gbS5iZWdpbigpKSB8fCAobGIgPT0gbS5lbmQoKSkpIHsKCQlyZXR1cm4gbS5lbmQoKTsKCX0KCUl0ZXIgaXQgPSBzdGQ6OnByZXYobGIpOwoJaWYoaXQtPmZpcnN0IDw9IHZhbCAmJiB2YWwgPD0gaXQtPnNlY29uZCApIHsKCQlyZXR1cm4gaXQ7Cgl9CgllbHNlewoJCXJldHVybiBtLmVuZCgpOwoJfQp9CmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJc3RkOjptYXA8aW50LGludD4gbXltYXA7CiAgICBteW1hcFsxMDBdPTIwMDsKICAgIG15bWFwWzEwMDBdPTIwMDA7CiAgICBteW1hcFsyMDAwXT0yNTAwOwogICAgbXltYXBbMzAwMF09NDAwMDsKICAgIG15bWFwWzUwMDBdPTUxMDA7CiAgICAKICAgIGludCBhWzRdezQ1MDAsIDQwMDAsIDE1MCwgMH07CiAgICBmb3IoaW50IHggOiBhKXsKCSAgICBJdGVyIGl0ID0gZ2V0SXRlcmF0b3IobXltYXAsIHgpOwoJICAgIGlmKGl0ICE9IG15bWFwLmVuZCgpKXsKCSAgICAJY291dCA8PCAiVmFsdWUgIiA8PCB4IDw8ICIgOiBGb3VuZCBpbiByYW5nZTogIiA8PCBpdC0+Zmlyc3QgPDwgIiwgIiA8PCBpdC0+c2Vjb25kIDw8ZW5kbDsKCSAgICB9ZWxzZXsKCSAgICAgICAgY291dCA8PCAiVmFsdWUgIiA8PCB4IDw8ICIgOiBOT1QgRk9VTkQhIiA8PGVuZGw7CgkgICAgfQogICAgfQoJcmV0dXJuIDA7Cn0=