Олимпиадные задачи по программированию. Лучшие решения. Часть 1. Ускова О.Ф - 64 стр.

UptoLike

Else Begin
Tx1:=x1;ty1:=Y1;Tx2:=Px1;Ty2:=Py1;Res:=D1+T End;
{Случай 2 б}
T:=Dest(LX1-LX2,LY1-LY2)/2;
T:=T/sqrt(3);PX1:=Dest(Lx1-X1,Ly1-Y1);PY1:=Dest(Lx2-X2,Ly2-
Y2);
If (2*T < PX1) and (2*T < PY1) and
(Dest(Lx2-X1,Ly2-Y1)<PY1) and (Dest(Lx1-X2,Ly1-Y2)<PX1) then
Begin
Px1:=(Lx1+Lx2)/2;Py1:=(Ly1+Ly2)/2;
Px2:=Px1-
T*A/Sqrt(Sqr(A)+Sqr(B));Px1:=Px1+T*A/Sqrt(Sqr(A)+Sqr(B));
PY2:=Py1-
T*B/Sqrt(Sqr(A)+Sqr(B));PY1:=Py1+T*B/Sqrt(Sqr(A)+Sqr(B));
T:=2*(D1+D2)-3*T;
If Res>T Then Begin
Res:=T;
If (A*PX1+B*PY1+C)*(A*X2+B*Y2+C)>0 Then
Begin Tx2:=Px1;Ty2:=Py1 End
Else Begin Tx2:=Px2;Ty2:=Py2 End;
Tx1:=(Lx1+Lx2)/2;Ty1:=(Ly1+Ly2)/2
End
End;
FindOneSideDest:=Res
End;
Procedure Done;
{Вывод результатов}
Var F:Text;Tx1,Ty1,tx2,ty2,D:Double;