hud 6590
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6590
题目大意为,已知的点中,是否存在一条直线将所有的每行输入第三位为-1 和1 的点分开。可转化为两个点集的凸包是否相交。
输入n个点。每个点输入 3个整数 从第3个判断点集合,将所有点集合别存放到vector中,分别求2个点集的凸包,在判断凸包有没有相交即可。
#include<cstdio>
#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
const double eps = 1e-10;
double dcmp(double x) {
if(fabs(x) < eps) return 0;
else return x < 0 ? -1 : 1;
}
struct Point {
double x, y;
Point(double x=0, double y=0):x(x),y(y) {}
};
typedef Point Vector;
Vector operator - (const Point& A, const Point& B) {
return Vector(A.x-B.x, A.y-B.y);
}
double Cross(const Vector& A, const Vector& B) {
return A.x*B.y - A.y*B.x;
}
double Dot(const Vector& A, const Vector& B) {
return A.x*B.x + A.