- #include <algorithm> 
- #include <iostream> 
- #include <stdexcept> 
-   
- template<class C> 
- auto median(C const& c){ 
-   using std::begin; using std::end; 
-   auto start = begin(c); 
-   auto finish = end(c); 
-   using iterator = decltype(start); 
-   std::vector<iterator> working; 
-   for(auto it = start; it != finish; ++it) 
-     working.push_back(it); 
-   if (working.empty()) 
-       return start; 
-   std::nth_element( 
-       begin(working), begin(working) + working.size() / 2, end(working), 
-       [](iterator lhs, iterator rhs){ 
-           return *lhs < *rhs; 
-       } 
-   ); 
-   return *(begin(working) + working.size() / 2); 
- } 
-   
- int main() { 
-     std::vector<int> v {4, 8, 15, 16, 23, 42}; 
-   
-     std::cout << *median(v) << std::endl; 
- } 
				I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkZXhjZXB0PgoKdGVtcGxhdGU8Y2xhc3MgQz4KYXV0byBtZWRpYW4oQyBjb25zdCYgYyl7CiAgdXNpbmcgc3RkOjpiZWdpbjsgdXNpbmcgc3RkOjplbmQ7CiAgYXV0byBzdGFydCA9IGJlZ2luKGMpOwogIGF1dG8gZmluaXNoID0gZW5kKGMpOwogIHVzaW5nIGl0ZXJhdG9yID0gZGVjbHR5cGUoc3RhcnQpOwogIHN0ZDo6dmVjdG9yPGl0ZXJhdG9yPiB3b3JraW5nOwogIGZvcihhdXRvIGl0ID0gc3RhcnQ7IGl0ICE9IGZpbmlzaDsgKytpdCkKICAgIHdvcmtpbmcucHVzaF9iYWNrKGl0KTsKICBpZiAod29ya2luZy5lbXB0eSgpKQogICAgICByZXR1cm4gc3RhcnQ7CiAgc3RkOjpudGhfZWxlbWVudCgKICAgICAgYmVnaW4od29ya2luZyksIGJlZ2luKHdvcmtpbmcpICsgd29ya2luZy5zaXplKCkgLyAyLCBlbmQod29ya2luZyksCiAgICAgIFtdKGl0ZXJhdG9yIGxocywgaXRlcmF0b3IgcmhzKXsKICAgICAgICAgIHJldHVybiAqbGhzIDwgKnJoczsKICAgICAgfQogICk7CiAgcmV0dXJuICooYmVnaW4od29ya2luZykgKyB3b3JraW5nLnNpemUoKSAvIDIpOwp9CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6dmVjdG9yPGludD4gdiB7NCwgOCwgMTUsIDE2LCAyMywgNDJ9OwogICAgCiAgICBzdGQ6OmNvdXQgPDwgKm1lZGlhbih2KSA8PCBzdGQ6OmVuZGw7Cn0=