#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct T{
string name;
T(string n):name(n){};
};
bool operator < (const T& l, const T *r) {
cout << "LEFT:" << l.name << " ... " << r->name << endl;
return l.name < r->name;
}
bool operator < (const T *l, const T &r) {
cout << "RIGHT:" << l->name << " ... " << r.name << endl;
return l->name < r.name;
}
int main() {
vector<T*> t;
t.push_back(new T("one"));
t.push_back(new T("three"));
t.push_back(new T("two"));
bool has_3 = binary_search( t.begin(), t.end(), T("two") ) ;
if( has_3 ){
cout <<"Its there" << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFR7CiAgICBzdHJpbmcgbmFtZTsKICAgIFQoc3RyaW5nIG4pOm5hbWUobil7fTsKfTsKCiAgICBib29sIG9wZXJhdG9yIDwgKGNvbnN0IFQmIGwsIGNvbnN0IFQgKnIpIHsKICAgIAljb3V0IDw8ICJMRUZUOiIgPDwgbC5uYW1lIDw8ICIgLi4uICIgPDwgci0+bmFtZSA8PCBlbmRsOwogICAgICAgIHJldHVybiBsLm5hbWUgPCByLT5uYW1lOwogICAgfQogICAgYm9vbCBvcGVyYXRvciA8IChjb25zdCBUICpsLCBjb25zdCBUICZyKSB7CiAgICAJY291dCA8PCAiUklHSFQ6IiA8PCBsLT5uYW1lIDw8ICIgLi4uICIgPDwgci5uYW1lIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuIGwtPm5hbWUgPCByLm5hbWU7CiAgICB9CgppbnQgbWFpbigpIHsKICAgIHZlY3RvcjxUKj4gdDsKICAgIHQucHVzaF9iYWNrKG5ldyBUKCJvbmUiKSk7CiAgICB0LnB1c2hfYmFjayhuZXcgVCgidGhyZWUiKSk7CiAgICB0LnB1c2hfYmFjayhuZXcgVCgidHdvIikpOwoKICAgIGJvb2wgaGFzXzMgPSBiaW5hcnlfc2VhcmNoKCB0LmJlZ2luKCksIHQuZW5kKCksIFQoInR3byIpICkgOwogICAgaWYoIGhhc18zICl7CiAgICAgICAgY291dCA8PCJJdHMgdGhlcmUiIDw8IGVuZGw7CiAgICB9CglyZXR1cm4gMDsKfQ==