- #include <vector> 
- #include <utility> 
- #include <algorithm> 
- #include <iostream> 
-   
- template<class Iter, class T> 
- Iter binary_find(Iter begin, Iter end, T val) 
- { 
-     // Finds the lower bound in at most log(last - first) + 1 comparisons 
-     Iter i = std::lower_bound(begin, end, val); 
-   
-     if (i != end && *i == val) 
-         return i; // found 
-     else 
-         return end; // not found 
- } 
-   
- int main() 
- { 
-     std::vector< std::pair<int, int> > vec = { { 1, 2 }, { 2, 2 }, { 3, 4 }, { 4, 6 } }; 
-     auto elem = binary_find(vec.begin(), vec.end(), std::make_pair(2, 2)); 
-     std::cout << (elem != vec.end()) << std::endl; 
-   
-     return 0; 
- } 
				I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlPGNsYXNzIEl0ZXIsIGNsYXNzIFQ+Ckl0ZXIgYmluYXJ5X2ZpbmQoSXRlciBiZWdpbiwgSXRlciBlbmQsIFQgdmFsKQp7CiAgICAvLyBGaW5kcyB0aGUgbG93ZXIgYm91bmQgaW4gYXQgbW9zdCBsb2cobGFzdCAtIGZpcnN0KSArIDEgY29tcGFyaXNvbnMKICAgIEl0ZXIgaSA9IHN0ZDo6bG93ZXJfYm91bmQoYmVnaW4sIGVuZCwgdmFsKTsKCiAgICBpZiAoaSAhPSBlbmQgJiYgKmkgPT0gdmFsKQogICAgICAgIHJldHVybiBpOyAvLyBmb3VuZAogICAgZWxzZQogICAgICAgIHJldHVybiBlbmQ7IC8vIG5vdCBmb3VuZAp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6dmVjdG9yPCBzdGQ6OnBhaXI8aW50LCBpbnQ+ID4gdmVjID0geyB7IDEsIDIgfSwgeyAyLCAyIH0sIHsgMywgNCB9LCB7IDQsIDYgfSB9OwogICAgYXV0byBlbGVtID0gYmluYXJ5X2ZpbmQodmVjLmJlZ2luKCksIHZlYy5lbmQoKSwgc3RkOjptYWtlX3BhaXIoMiwgMikpOwogICAgc3RkOjpjb3V0IDw8IChlbGVtICE9IHZlYy5lbmQoKSkgPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiAwOwp9