Недавно я решал эту задачу. Я свёл ее к более простой задаче: даны точки A, B, C
, и надо узнать точку пересечения 2 прямых: AB и OC, где точка O — начало координат.
Сначала я написал пересечение двух прямых формулой (функция find()
), и получил ВА на 2 тестах. Потом я написал это при помощи бинпоиска (функция findgood()
) и получил AC. Далее я снова заслал решение с find()
, добавив #define ld __float128
, и оно зашло.
Кто-нибудь может объяснить, что за чертовщина тут произошла? Как формульное решение может быть менее точным, чем бинпоиск?