#ifndef HELPER_H #define HELPER_H #include #include #include struct point { int y; int x; }; static inline bool pointeq(struct point p1, struct point p2) { return p1.y == p2.y && p1.x == p2.x; } static inline unsigned int iabs(int i) { return i < 0 ? -i : i; } static inline int ipow(int base, int exp) { int result = 1; for (;;) { if (exp & 1) result *= base; exp >>= 1; if (!exp) break; base *= base; } return result; } static inline int randrange(int min, int max) { return rand() % (max + 1 - min) + min; } static inline void *xmalloc(size_t n) { void *ret = malloc(n); if(!ret) { fprintf(stderr, "malloc failed\n"); abort(); } return ret; } static inline void *xrealloc(void *ptr, size_t n) { void *ret = realloc(ptr, n); if(!ret) { fprintf(stderr, "realloc failed\n"); abort(); } return ret; } #endif //HELPER_H