// 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