Guest User

Untitled

a guest
Oct 20th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. #include <array>
  2. #include <algorithm>
  3.  
  4. constexpr auto min_dis(int a, int l)
  5. {
  6. return std::min({l-a, a});
  7. }
  8.  
  9. constexpr auto max_dis(int a, int l)
  10. {
  11. return std::max({l-a, a});
  12. }
  13.  
  14. template <class Container>
  15. constexpr auto get_min_time(const Container &container, int l)
  16. {
  17. Container a = container;
  18. auto itr1 = container.cbegin();
  19. auto itr2 = a.begin();
  20. for (; itr1 != container.cend(); ++itr1, ++itr2)
  21. {
  22. *itr2 = min_dis(*itr1, l);
  23. }
  24. return *std::max_element(a.cbegin(), a.cend());
  25. }
  26.  
  27. template <class Container>
  28. constexpr auto get_max_time(const Container &container, int l)
  29. {
  30. Container a = container;
  31. auto itr1 = container.cbegin();
  32. auto itr2 = a.begin();
  33. for (; itr1 != container.cend(); ++itr1, ++itr2)
  34. {
  35. *itr2 = max_dis(*itr1, l);
  36. }
  37. return *std::max_element(a.cbegin(), a.cend());
  38. }
  39.  
  40. int main()
  41. {
  42. constexpr auto l = 10;
  43. constexpr std::array x = {2, 6, 7};
  44. constexpr auto min_time = get_min_time(x, l);
  45. constexpr auto max_time = get_max_time(x, l);
  46.  
  47. static_assert(min_time == 4);
  48. static_assert(max_time == 8);
  49. return 0;
  50. }
Add Comment
Please, Sign In to add comment