using System;
public class Test
{
public static double GetDist(double ax, double ay, double bx, double by, double x, double y)
{
if ((ax-bx)*(x-bx)+(ay-by)*(y-by) <= 0)
return Math.Sqrt((x - bx) * (x - bx) + (y - by) * (y - by));
if ((bx-ax)*(x-ax)+(by-ay)*(y-ay) <= 0)
return Math.Sqrt((x - ax) * (x - ax) + (y - ay) * (y - ay));
return Math.Abs((by - ay)*x - (bx - ax)*y + bx*ay - by*ax) /
Math.Sqrt((ay - by) * (ay - by) + (ax - bx) * (ax - bx));
}
public static void Main()
{
Console.WriteLine(GetDist(0, 2, 2, 0, 0, 0));
Console.WriteLine(GetDist(0, 2, 2, 0, 0, 3));
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJCnB1YmxpYyBzdGF0aWMgZG91YmxlIEdldERpc3QoZG91YmxlIGF4LCBkb3VibGUgYXksIGRvdWJsZSBieCwgZG91YmxlIGJ5LCBkb3VibGUgeCwgZG91YmxlIHkpCnsKICAgaWYgKChheC1ieCkqKHgtYngpKyhheS1ieSkqKHktYnkpIDw9IDApCiAgICAgIHJldHVybiBNYXRoLlNxcnQoKHggLSBieCkgKiAoeCAtIGJ4KSArICh5IC0gYnkpICogKHkgLSBieSkpOwoKICAgaWYgKChieC1heCkqKHgtYXgpKyhieS1heSkqKHktYXkpIDw9IDApCiAgICAgIHJldHVybiBNYXRoLlNxcnQoKHggLSBheCkgKiAoeCAtIGF4KSArICh5IC0gYXkpICogKHkgLSBheSkpOwoKIHJldHVybiBNYXRoLkFicygoYnkgLSBheSkqeCAtIChieCAtIGF4KSp5ICsgYngqYXkgLSBieSpheCkgLwogICAgIE1hdGguU3FydCgoYXkgLSBieSkgKiAoYXkgLSBieSkgKyAoYXggLSBieCkgKiAoYXggLSBieCkpOwp9CgoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCUNvbnNvbGUuV3JpdGVMaW5lKEdldERpc3QoMCwgMiwgMiwgMCwgMCwgMCkpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKEdldERpc3QoMCwgMiwgMiwgMCwgMCwgMykpOwoJfQp9