[ Code ]
using ll = long long;
using pll = pair<ll, ll>;
#define x first
#define y second
int ccw(pll a, pll b, pll c) {
ll t = (a.x - b.x) * (c.y - b.y) - (a.y - b.y) * (c.x - b.x);
return (t > 0) - (t < 0);
}
int cross(pll a, pll b, pll c, pll d) {
int abc = ccw(a, b, c);
int abd = ccw(a, b, d);
int cda = ccw(c, d, a);
int cdb = ccw(c, d, b);
if (abc * abd == 0 && cda * cdb == 0) {
if (a > b) swap(a, b);
if (c > d) swap(c, d);
return (a <= d && c <= b);
}
return (abc * abd <= 0 && cda * cdb <= 0);
}
댓글