Skip to content

Instantly share code, notes, and snippets.

@raybbian
Created October 15, 2024 02:22
Show Gist options
  • Save raybbian/dcde142df2d271b6b2038419c5d0aa9c to your computer and use it in GitHub Desktop.
Save raybbian/dcde142df2d271b6b2038419c5d0aa9c to your computer and use it in GitHub Desktop.
// binary search
template <typename T, typename U> T last_true(T l, T r, U f) {
l--;
assert(l <= r);
while (l < r) {
T mid = l + (r - l + 1) / 2;
f(mid) ? l = mid : r = mid - 1;
}
return l;
}
template <typename T, typename U> T first_true(T l, T r, U f) {
r++;
assert(l <= r);
while (l < r) {
T mid = l + (r - l) / 2;
f(mid) ? r = mid : l = mid + 1;
}
return l;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment