https://www.acmicpc.net/problem/2669

이걸 직사각형 하나하나 영역을 비교해 가며 계산하는 건 꽤나 어려운 문제가 될 듯 하여, 관점을 좌표지점이 아닌 네모 한 칸으로 옮겨보기로 했다.
즉 (1, 2), (4, 4)로 지정된 직사각형의 경우 pivot을 왼쪽 아래로 잡고 (1, 2), (2, 2), (3, 2), (1, 3), (2, 3), (3, 3)의 여섯 칸으로 이루어진 직사각형이다-라고 생각한다는 것이다. 이렇게 하면 중복좌표를 쉽게 처리할 수 있다. 넓이도 그냥 중복을 제거한 좌표의 총 갯수라고만 생각하면 돼서 편하다.
#include <iostream>
using namespace std;
int main() {
int a, b, x, y;
int list[100][100] = {0};
int sum = 0;
for(int i=0; i<4; i++) {
cin >> a >> b >> x >> y;
for(int j=a; j<x; j++) {
for(int k=b; k<y; k++) {
if(list[j][k] == 0) {
list[j][k] = 1;
sum++;
}
}
}
}
cout << sum << endl;
}