#include <string>
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(){
typedef std::map<std::string,int> mapT;
mapT my_map;
my_map["2010-01-26 17:02:12"]= 1;
my_map["2010-01-25 08:55:29"]= 2;
my_map["2010-01-24 08:55:29"]= 3;
my_map["2010-01-23 08:55:29"]= 4;
string timestamp = "2010-01-24 08:55:30"; // should return 3
cout<<"using upper bound"<<endl;
mapT::iterator it= my_map.find(timestamp);
if(it == my_map.end()) {
mapT::iterator itup = my_map.upper_bound(timestamp);
cout<<itup->second<<endl;
}
cout<<"using lower bound"<<endl;
it= my_map.find(timestamp);
if(it == my_map.end()) {
mapT::iterator itlow = my_map.lower_bound(timestamp);
cout<<itlow->second<<endl;
}
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpewogICAgCiAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0cmluZyxpbnQ+ICBtYXBUOwogCiAgICBtYXBUIG15X21hcDsKICAgIG15X21hcFsiMjAxMC0wMS0yNiAxNzowMjoxMiJdPSAxOwogICAgbXlfbWFwWyIyMDEwLTAxLTI1IDA4OjU1OjI5Il09IDI7CiAgICBteV9tYXBbIjIwMTAtMDEtMjQgMDg6NTU6MjkiXT0gMzsKICAgICBteV9tYXBbIjIwMTAtMDEtMjMgMDg6NTU6MjkiXT0gNDsKCiAgICBzdHJpbmcgdGltZXN0YW1wID0gIjIwMTAtMDEtMjQgMDg6NTU6MzAiOyAvLyAgc2hvdWxkIHJldHVybiAzCgogICAKICAgIGNvdXQ8PCJ1c2luZyB1cHBlciBib3VuZCI8PGVuZGw7CiAgICBtYXBUOjppdGVyYXRvciAgaXQ9IG15X21hcC5maW5kKHRpbWVzdGFtcCk7CiAgICBpZihpdCA9PSBteV9tYXAuZW5kKCkpIHsKICAgICAgbWFwVDo6aXRlcmF0b3IgaXR1cCA9IG15X21hcC51cHBlcl9ib3VuZCh0aW1lc3RhbXApOwogICAgICBjb3V0PDxpdHVwLT5zZWNvbmQ8PGVuZGw7CiAgICAgIAogICAgfQogICAgIGNvdXQ8PCJ1c2luZyBsb3dlciBib3VuZCI8PGVuZGw7CiAgICAgaXQ9IG15X21hcC5maW5kKHRpbWVzdGFtcCk7CiAgICBpZihpdCA9PSBteV9tYXAuZW5kKCkpIHsKICAgICAgbWFwVDo6aXRlcmF0b3IgaXRsb3cgPSBteV9tYXAubG93ZXJfYm91bmQodGltZXN0YW1wKTsKICAgIGNvdXQ8PGl0bG93LT5zZWNvbmQ8PGVuZGw7CiAgICB9CgogICAKICAgIHJldHVybiAwOwp9Cg==