Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <array>
- #include <algorithm>
- constexpr auto min_dis(int a, int l)
- {
- return std::min({l-a, a});
- }
- constexpr auto max_dis(int a, int l)
- {
- return std::max({l-a, a});
- }
- template <class Container>
- constexpr auto get_min_time(const Container &container, int l)
- {
- Container a = container;
- auto itr1 = container.cbegin();
- auto itr2 = a.begin();
- for (; itr1 != container.cend(); ++itr1, ++itr2)
- {
- *itr2 = min_dis(*itr1, l);
- }
- return *std::max_element(a.cbegin(), a.cend());
- }
- template <class Container>
- constexpr auto get_max_time(const Container &container, int l)
- {
- Container a = container;
- auto itr1 = container.cbegin();
- auto itr2 = a.begin();
- for (; itr1 != container.cend(); ++itr1, ++itr2)
- {
- *itr2 = max_dis(*itr1, l);
- }
- return *std::max_element(a.cbegin(), a.cend());
- }
- int main()
- {
- constexpr auto l = 10;
- constexpr std::array x = {2, 6, 7};
- constexpr auto min_time = get_min_time(x, l);
- constexpr auto max_time = get_max_time(x, l);
- static_assert(min_time == 4);
- static_assert(max_time == 8);
- return 0;
- }
Add Comment
Please, Sign In to add comment