Возможная идея решения:
1. Зафиксируем какой-то отрезок, тогда каждая параллельная прямая будут давать геометрическое место вершин, которые будут образовывать с отрезком треугольники одной и тойже площади (S = 0.5 * a * h_a). Видно что из таких параллельных прямых нас интересует ближайшая к нашему отрезку и любая точка на этой прямой.
2. Проведем через все точки вертикальные прямые и найдем их порядок, далее будем вращать прямые вокруг точек, их порядок поменяется в случае, когда две какие-то прямые совпадут (на этой прямой будет расположен какой-то отрезок) - эти две прямые просто поменяются местами после совпадения при вращении дальше.
3. Сделаем события -- отрезок, и упорядочим их по углу накланной прямой проведенной через этот отрезок и будем просматривать их в этом порядке. Будем обходить события, поддерживая текущий порядок прямых.
При событии - меняем две соответствующие прямые, а также смотрим первые несовпадающие по одну сторону от прямой и по другую сторону от прямой ((в текущем порядке), для каждого отрезка вершина с минимальной площадью будет лежать на одной из этих прямых - выберем из них минимум для этого отрезка, а затем и минимум по площадям для каждого из отрезков и получим ответ.