/* Problem #5 -- Stanford Local Programming Contest - 2003 Solution by manku@stanford.edu */ #include #include char b[10000*10000/8] ; int main(int argc, char *argv[]) { int W, H, w, h, x, y, i, j, area ; while (scanf ("%d %d", &W, &H) == 2) { memset (&b[0], 0, sizeof(b)) ; while (1) { scanf ("%d %d %d %d", &w, &h, &x, &y) ; if (w+h+x+y == 0) break ; for (j = y; j < y+h; j++) for (i = x; i < x+w; i++) b[(j*10000 + i)/8] |= (1 << ((j*10000 + i) % 8)); } area = W*H ; for (j = 0; j < H; j++) for (i = 0; i < W; i++) if (b[(j*10000 + i)/8] & (1 << ((j*10000 + i) % 8))) area-- ; fprintf (stdout, "Floor has %d area not covered\n", area) ; } return 0 ; }