summaryrefslogtreecommitdiff
path: root/content
diff options
context:
space:
mode:
authorGloria Mundi <gloria@gloria-mundi.eu>2025-02-19 21:29:03 +0100
committerGloria Mundi <gloria@gloria-mundi.eu>2025-02-19 21:29:03 +0100
commit0f1223c5396961a661da4f12caf0252f924de01b (patch)
treec3828c5ed20d36bf950808ec26502aee8d08ea83 /content
parent30fb502038c560ffa10418153887b536011306ab (diff)
reverse dynamic convex hull
Diffstat (limited to 'content')
-rw-r--r--content/datastructures/dynamicConvexHull.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/content/datastructures/dynamicConvexHull.cpp b/content/datastructures/dynamicConvexHull.cpp
index 36ef6f5..3e4020e 100644
--- a/content/datastructures/dynamicConvexHull.cpp
+++ b/content/datastructures/dynamicConvexHull.cpp
@@ -1,16 +1,16 @@
struct Line {
mutable ll m, c, p;
- bool operator<(const Line& o) const { return m < o.m; }
+ bool operator<(const Line& o) const { return m > o.m; }
bool operator<(ll x) const { return p < x; }
};
-struct HullDynamic : multiset<Line, less<>> { // max über Geraden
+struct HullDynamic : multiset<Line, less<>> { // min über Geraden
// (for doubles, use INF = 1/.0, div(a,c) = a/c)
ll div(ll a, ll c) { return a / c - ((a ^ c) < 0 && a % c); }
bool isect(iterator x, iterator y) {
if (y == end()) { x->p = INF; return false; }
- if (x->m == y->m) x->p = x->c > y->c ? INF : -INF;
+ if (x->m == y->m) x->p = x->c < y->c ? INF : -INF;
else x->p = div(y->c - x->c, x->m - y->m);
return x->p >= y->p;
}