题目链接:uva 10794 - The Deadly Olympic Returns!!!
点到线段的距离,终点定无穷远。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
const double eps = 1e-8;
inline int dcmp (double x) { if (fabs(x) < eps) return 0; else return x < 0 ? -1 : 1; }
struct Point3 {
double x, y, z;
Point3 (double x = 0, double y = 0, double z = 0): x(x), y(y), z(z) {}
bool operator < (const Point3& u) const { return dcmp(x-u.x)<0 || (dcmp(x-u.x)==0 && dcmp(y-u.y)<0) || (dcmp(x-u.x)==0 && dcmp(y-u.y)==0 && dcmp(z-u.z) < 0); }
bool operator > (const Point3& u) const { return u < (*this); }
bool operator == (const Point3& u) const { return !(u < (*this) || (*this) < u); }
bool operator != (const Point3& u) const { return !((*this) == u); }
Point3 operator + (const Point3& u) const { return Point3(x+u.x, y+u.y, z+u.z); }
Point3 operator - (const Point3& u) const { return Point3(x-u.x, y-u.y, z-u.z); }
Point