typedef struct interval_s { long low; // lower bound long up; // upper bound } interval_t; long max(long a, long b) { if (a > b) return a; return b; } long min(long a, long b) { if (a > b) return b; return a; } int is_empty(const interval_t *a) { return a->low > a-> up; } int is_empty_intersection(const struct interval_s *a, const struct interval_s *b) { if (!a || !b) return 1; const interval_t *l[] = {a, b}; for (int i = 0; i < 2; i++) { if (is_empty(l[i])) return 1; } interval_t s = {max(a->low, b->low), min(a->up, b->up)}; return is_empty(&s); };