С указанным кодом вы злоупотребляете картой для сортировки ключей.
Вы можете добиться гораздо большей производительности, избегая полной сортировки и копирования:
const int len = 14;
const int a[len] = {10,15,14,13,17,15,16,12,18,10,29,24,35,36};
std::nth_element( a, a+len/2, a+len );
std::cout << "Median: " << a[len/2] << std::endl;
Если вы предпочитаете использовать контейнеры STL, ваш код будет выглядеть следующим образом (при условии, что контейнер с итераторами произвольного доступа):
std::vector<int> v( a, a+len );
std::nth_element( v.begin(), v.begin()+len/2,v.end() );
std::cout << "Median: " << v[len/2] << std::endl;