// UVa 10713 - Map // code by danile53 and arpo #include <iostream> #include <math.h> #include <stdio.h> #include <cmath> #include <vector> #include <map> using namespace std; typedef pair<string, double> pa; const double epsilon = 1e-10; double dist(double x, double y) { return sqrt(x * x + y * y); } string move(double x1, double y1, double x2, double y2) { string dir = ""; double dx = abs(x2 - x1); double dy = abs(y2 - y1); if (dy >= epsilon) dir += (y2 > y1 ? "north" : "south"); if (dx >= epsilon) dir += (x2 > x1 ? "east" : "west"); if (dir != "") { cout << dir; printf(" %.10lf\n", dist(dx, dy)); } return dir; } int main() { bool first = true; while (true) { double r, x, y, X, Y; cin >> r; if (r == -1) break; if (!first) cout << endl; else first = false; cin >> x >> y >> X >> Y; double dx = abs(x - X); double dy = abs(y - Y); double dd = min(dx, dy); double xmid = x + dd * (X > x ? 1 : -1); double ymid = y + dd * (Y > y ? 1 : -1); if (dist(xmid, ymid) >= r) { xmid = X - dd * (X > x ? 1 : -1); ymid = Y - dd * (Y > y ? 1 : -1); } move(x, y, xmid, ymid); move(xmid, ymid, X, Y); } return 0; }
Wednesday, May 13, 2015
UVa 10713 - Map
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment