Предположим, что все координаты x, y являются положительными числами.(Без ограничения общности можно добавить смещения.) За время O (n log n) отсортируйте список L точек, в основном в порядке возрастания по координатам x и во вторую очередь в порядке возрастания по координатам y.За время O (n) обработайте пары точек (в порядке L) следующим образом.Пусть p, q будут любыми двумя последовательными точками в L, и пусть px, qx, py, qy обозначают их значения координат x и y.Оттуда вам просто нужно рассмотреть несколько случаев, и должно быть очевидно, что делать: если px = qx, ничего не делать.Иначе, если py <= qy, ничего не делать.В противном случае (px> qx, py> qy) требуется, чтобы px + A * py т.е. (px-qx) / (py-qy)> A.
Итак: Пройдите по порядку L и найдите наибольшее A ', которое удовлетворяется для всех пар точек, где px> qx и py> qy.Затем выберите значение A, немного меньшее, чем A ', например, A' / 2.(Или, если целью проблемы является найти наибольшее такое A, просто сообщите значение A '.)