/* coder: ACboy date: 2010-3-21 result: AC description: UVa 10310 Dog and Gopher */ #include <iostream> #include <cmath> using namespace std; #define EPS 1e-6 struct Point { double x; double y; }; Point points[1100]; int n; Point dogPos; Point gopherPos; double getDis(Point & a, Point & b) { return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)); } int main() { #ifndef ONLINE_JUDGE freopen("10310.txt", "r", stdin); #endif while (cin >> n) { scanf("%lf%lf%lf%lf", &gopherPos.x, &gopherPos.y, &dogPos.x, &dogPos.y); int i; for (i = 0; i < n; i++) { scanf("%lf%lf", &points[i].x, &points[i].y); } int ok = 0; int pos = -1; for (i = 0; i < n; i++) { double dis1 = getDis(gopherPos, points[i]); double dis2 = getDis(dogPos, points[i]); if (dis1 * 2 < dis2 || fabs(dis1 * 2 - dis2) < EPS) { ok = 1; pos = i; break; } } if (ok){ printf("The gopher can escape through the hole at (%.3lf,%.3lf)./n", points[pos].x, points[pos].y); } else { printf("The gopher cannot escape./n"); } } return 0; }