#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[3] < n[0] || n[2] > n[1])) { ++overlaps; } } printf("Overlaps: %d\n", overlaps); return 0; }