#include #include #include int main (void) { int k, K; int m, n; char s[258]; int st[1001], en[1001]; int sh, sm, eh, em; char *ts; char name[1001][9]; char busy [7200]; char overlap; int ov; int i, j, t; FILE *in = fopen ("overlap.in", "r"); fscanf (in, "%d\n", &K); for (k = 1; k <= K; k ++) { ov = 0; fscanf (in, "%d %d\n", &m, &n); for (i = 1; i <= m; i ++) { fgets (s, 256, in); s[strlen(s)-1] = 0; strcpy (name[i], strtok(s, " ")); ts = strtok(NULL, " "); if (strcmp (ts, "M") == 0) st[i] = en[i] = 0; else if (strcmp (ts, "T") == 0) st[i] = en[i] = 24*60; else if (strcmp (ts, "W") == 0) st[i] = en[i] = 2*24*60; else if (strcmp (ts, "TH") == 0) st[i] = en[i] = 3*24*60; else st[i] = en[i] = 4*24*60; ts = strtok (NULL, " "); sscanf (ts, "%d:%d-%d:%d", &sh, &sm, &eh, &em); st[i] += sh*60+sm; en[i] += eh*60+em; } for (j = 0; j < n; j ++) { for (t = 0; t <= 7200; t ++) busy[t] = 0; overlap = 0; fgets (s, 256, in); s[strlen(s)-1] = 0; for (ts = strtok (s, " "); ts != NULL; ts = strtok (NULL, " ")) for (i = 1; i <= m; i ++) if (strcmp(ts, name[i]) == 0) for (t = st[i]; t < en[i]; t ++) { if (busy[t]) overlap = 1; busy[t] = 1; } if (overlap) ov ++; } printf ("Data Set %d:\n", k); printf ("%d\n", ov); } fclose (in); return 0; }