#include <iostream>
#include <vector>
#include <algorithm>
template<typename Iter>
Iter find_nearest(Iter begin, Iter end,
const typename std::iterator_traits<Iter>::value_type & value)
{
typedef typename std::iterator_traits<Iter>::value_type T;
return std::min_element(begin, end, [&value](const T& a, const T& b){
return abs(value - a) < abs(value - b);
});
}
int main() {
std::vector<int> l = {1, 43, 10, 17};
auto a = find_nearest(l.begin(), l.end(), 42);
std::cout << *a << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4KSXRlciBmaW5kX25lYXJlc3QoSXRlciBiZWdpbiwgSXRlciBlbmQsCiAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXI+Ojp2YWx1ZV90eXBlICYgdmFsdWUpCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcj46OnZhbHVlX3R5cGUgVDsKICAgIHJldHVybiBzdGQ6Om1pbl9lbGVtZW50KGJlZ2luLCBlbmQsIFsmdmFsdWVdKGNvbnN0IFQmIGEsIGNvbnN0IFQmIGIpewogICAgICAgIHJldHVybiBhYnModmFsdWUgLSBhKSA8IGFicyh2YWx1ZSAtIGIpOwogICAgfSk7Cn0KCmludCBtYWluKCkgeyAgIAogICAgc3RkOjp2ZWN0b3I8aW50PiBsID0gezEsIDQzLCAxMCwgMTd9OwogICAgYXV0byBhID0gZmluZF9uZWFyZXN0KGwuYmVnaW4oKSwgbC5lbmQoKSwgNDIpOwogICAgc3RkOjpjb3V0IDw8ICphIDw8IHN0ZDo6ZW5kbDsKfQ==