fork download
  1. #include <vector>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <iterator>
  5.  
  6. template <typename Containers>
  7. std::vector<typename Containers::value_type::value_type> reduce_minelement(const Containers& containers)
  8. {
  9. typedef typename Containers::value_type slice_t;
  10. typedef typename Containers::const_iterator slice_ci;
  11. typedef typename slice_t::value_type element_t;
  12. std::vector<element_t> result;
  13. result.reserve(containers.size()); // pre-allocated
  14.  
  15. for (slice_ci it=containers.begin(); it!=containers.end(); ++it)
  16. {
  17. result.push_back(*std::min_element(it->begin(), it->end()));
  18. }
  19.  
  20. return result;
  21. }
  22.  
  23. typedef int ints_t[6];
  24. static const ints_t s_data[] = {
  25. { 19152, 1, 21193, 17574, 8484, 30333 },
  26. { 20189, 18837, 30734, 2, 22440, 3534 },
  27. { 3, 26118, 19367, 17877, 24605, 7838 },
  28. { 30885, 20135, -4, 31316, 11838, 8926 },
  29. { 26830, 20209, 27286, 16105, 16601, 28304 },
  30. { 10208, 28062, 15612, 26270, 19234, 21326 },
  31. { 5208, 17473, 3383, 15659, 32494, 24231 },
  32. { 31685, 22500, 18860, 21318, 18893, 21385 },
  33. { 14295, 17163, 8920, 15986, 13448, 21143 },
  34. { 20199, 8954, 599, 17459, 3884, 8634 },
  35. { 16768, 20563, 6727, 26305, 11053, 6418 },
  36. { 7446, 6853, 5283, 6193, 28291, 4205 },
  37. { 27056, 17514, 5359, 29656, 10910, 6034 },
  38. { 21984, 1261, 2404, 17644, 25969, 1735 },
  39. { 797, 8457, 23584, 29363, 26362, 17383 },
  40. { 768, 11018, 14991, 0, 28720, 6159 },
  41. };
  42.  
  43. int main()
  44. {
  45. std::vector<std::vector<int> > data;
  46.  
  47. for (const ints_t *it=s_data; it!=s_data+(sizeof(s_data)/sizeof(*s_data)); ++it)
  48. data.push_back(std::vector<int>(*it+0, *it+sizeof(*it)/sizeof(**it)));
  49.  
  50. std::vector<int> reduced = reduce_minelement(data);
  51.  
  52. std::copy(reduced.begin(), reduced.end(), std::ostream_iterator<int>(std::cout, ", "));
  53.  
  54. return 0;
  55. }
  56.  
  57.  
  58.  
Success #stdin #stdout 0s 2860KB
stdin
Standard input is empty
stdout
1, 2, 3, -4, 16105, 10208, 3383, 18860, 8920, 599, 6418, 4205, 5359, 1261, 797, 0,