#include #include template > struct Discretization : public std::vector { explicit Discretization() = default; explicit Discretization(const std::vector &a_) : std::vector(a_) { normalize(); } void normalize() { std::ranges::sort(*this, Compare{}); auto [first, last] = std::ranges::unique(*this); this->erase(first, last); } int index(T x) const { return std::ranges::lower_bound(*this, x, Compare{}) - this->begin(); } };