#include #include char * getsect(int * dest, char * pch, char expect) { char * end; if (!pch) return NULL; *dest = strtol(pch, &end, 10); if (*dest == 0 && end == pch) return NULL; if (*end != expect) return NULL; if (expect) ++end; return end; } int main() { char buf[BUFSIZ]; int overlaps = 0; while (fgets(buf, sizeof(buf), stdin)) { int n[4]; char * pbuf; pbuf = getsect(&n[0], buf, '-'); pbuf = getsect(&n[1], pbuf, ','); pbuf = getsect(&n[2], pbuf, '-'); pbuf = getsect(&n[3], pbuf, '\n'); if (!pbuf) { fprintf(stderr, "Unexpected line: %s\n", buf); return -1; } if ((n[2] >= n[0] && n[3] <= n[1]) || (n[0] >= n[2] && n[1] <= n[3])) { ++overlaps; } } printf("Overlaps: %d\n", overlaps); return 0; }