func computeArea(A int, B int, C int, D int, E int, F int, G int, H int) int { return areaOf(A, B, C, D) + areaOf(E, F, G, H) - overlap(A, C, E, G)*overlap(B, D, F, H) } func overlap(a1, a2, b1, b2 int) int { l := a2 - a1 + b2 - b1 - (maxInt(a2, b2) - minInt(a1, b1)) if l < 0 { return 0 } return l } func areaOf(A, B, C, D int) int { return (C - A) * (D - B) } func maxInt(x, y int) int { if x < y { return y } return x } func minInt(x, y int) int { if x < y { return x } return y }