Mam taki jeden test, choć nieznacznie przekracza zakresy danych w zadaniu:
-1000 1000 0 0 1000 -1001
twój wynik, to:
2830549.25[32]
mój:
2830549.24[05]
Wynika z tego, że trochę inaczej kumulują się gdzieś w naszych kodach błędy zaokrągleń i dla dużych testów powodują malutką różnicę.
Np ja w swoim kodzie użyłem tylko w jednym miejscu funkcji sqrt*
===
*
Dokładniej, zamist sqrt, użyłem [tutaj] wygodniejszej i czasami dokładniejszej funkcji hypot, ale u Ciebie nie ma to wpływu na wynik. Mimo to warto poznać tą funkcję. Np u Ciebie zamiast:
da = math.sqrt((p[3] - p[1])**2 + (p[2] - p[0])**2)
możesz użyć:
da = math.hypot(p[3] - p[1], p[2] - p[0])
chociaż nie spowoduje to AC, ale jest jednak dużo krótsze do napisania.
Druga sprawa, to mój kod jest w c++ ale to nie powinno powodować różnicy, to raczej trochę inaczej liczenie wyniku powoduje te róznice i WA.