[ 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);
}
'PS > 기본구현' 카테고리의 다른 글
FFT 코드 (0) | 2022.08.23 |
---|---|
플로우 - Dinic, Edmonds-Karp 알고리즘 (0) | 2022.08.08 |
레이지 프로퍼게이션 코드 (0) | 2022.08.07 |
세그먼트 트리 코드 (0) | 2022.08.07 |
댓글