From 4e9020dfb847d80475415f9f5914efaa50238767 Mon Sep 17 00:00:00 2001 From: lemon Date: Mon, 23 Feb 2026 20:33:42 +0100 Subject: cpp: add __COUNTER__ macro --- common.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'common.h') diff --git a/common.h b/common.h index 0c4945e..486b39a 100644 --- a/common.h +++ b/common.h @@ -376,6 +376,20 @@ bsiter(uint *i, struct bitset bs[/*siz*/], uint siz) } #define bs_each(T, var, bs, siz) for (T (var) = 0; bsiter(&(var), (bs), (siz)); ++(var)) +static inline bool +bsiterzr(uint *i, struct bitset bs[/*siz*/], uint siz) +{ + uint k = *i/BSNBIT, j = *i%BSNBIT; + if (k >= siz) return 0; + size_t t = ~bs[k].u & ~(((size_t)1 << j) - 1); + while (!t) { + if (++k >= siz) return 0; + t = ~bs[k].u; + } + *i = k*BSNBIT + lowestsetbit(t); + return 1; +} + /********/ /** IO **/ /********/ -- cgit v1.2.3