diff --git a/03_week/tasks/minmax/minmax.cpp b/03_week/tasks/minmax/minmax.cpp index c2869799..3d054f09 100644 --- a/03_week/tasks/minmax/minmax.cpp +++ b/03_week/tasks/minmax/minmax.cpp @@ -1,6 +1,50 @@ -#include - - -/* return_type */ MinMax(/* args */) { - throw std::runtime_error{"Not implemented"}; -} +#include +#include +#include + +std::pair::const_iterator, std::vector::const_iterator> +MinMax(const std::vector& vec) { + if (vec.empty()) { + return {vec.end(), vec.end()}; + } + + auto min_it = vec.begin(); + auto max_it = vec.begin(); + + for (auto it = vec.begin() + 1; it != vec.end(); ++it) { + if (*it < *min_it) { + + min_it = it; + } else if (*it > *max_it) { + + max_it = it; + } else if (*it == *max_it) { + + max_it = it; + } + } + + return {min_it, max_it}; +} + +std::pair::iterator, std::vector::iterator> +MinMax(std::vector& vec) { + if (vec.empty()) { + return {vec.end(), vec.end()}; + } + + auto min_it = vec.begin(); + auto max_it = vec.begin(); + + for (auto it = vec.begin() + 1; it != vec.end(); ++it) { + if (*it < *min_it) { + min_it = it; + } else if (*it > *max_it) { + max_it = it; + } else if (*it == *max_it) { + max_it = it; + } + } + + return {min_it, max_it}; +} \ No newline at end of file