Problem (Contest): https://www.codechef.com/COCS2019/problems/ANWCC05
Problem Statement in brief:
Given points $P,S$ and $R$, determine whether it is possible to draw a circle passing through $S$ and $R$ such that $PS$ is a tangent. If possible then determine the length $QR$ where $Q$ intersection of line $PR$ with the circle (other than $R$). If $QR$ is zero, print $-1$.
Pre-requisites:
High school geometry lemmas.
Solution:
Such a circle is possible only when $P,R,S$ are not collinear. So check for slopes of the lines $PR$ and $PS$, i.e.,$ \frac{y_p-y_r}{x_p-x_r}==\frac{y_p-y_s}{x_p-x_s}$. Make separate checks to deal with cases when lines are parallel to $y$-axis (division by zero!).
Now we use the formula for Power of a point.
If such a circle exists, then $pow(P)=PS^2=PQ\cdot PR$.
Let $QR=x$. If $R$ is closer to $P$ than $Q$, then $PQ=PR+x$. If $Q$ is closer, then $PQ=PR-x$.
So, $PS^2=PR\cdot(PR\pm x)\Rightarrow \pm x=\frac{PS^2-PR^2}{PR}\Rightarrow x=\left|\frac{PS^2-PR^2}{PR}\right|$.
Now just check if $PS^2==PR^2$, then print -1, otherwise compute the value of $x$ and print it.
Required distance formula: $PR^2=(x_p-x_r)^2+(y_p-y_r)^2$.
Here is my solution.