class Solution {
public:
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int res = (C-A) * (D-B) + (G-E) * (H-F);
long x1 = max(A,E), y1 = max(B,F), x2 = min(C,G), y2 = min(D,H);
return res - max(0L, x2-x1) * max(0L,y2-y1); // x2-x1 may overflow
}
};
class Solution {
public:
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int res = (C-A) * (D-B) + (G-E) * (H-F);
int x1 = max(A,E), y1 = max(B,F), x2 = min(C,G), y2 = min(D,H);
if (x1 < x2 && y1 < y2)
res -= (x2-x1) * (y2-y1);
return res;
}
};