###### tags: `leetcode` `Medium` `Math` `Geometry`
# [223. Rectangle Area](https://leetcode.com/problems/rectangle-area/)
## Description
Given the coordinates of two **rectilinear** rectangles in a 2D plane, return the total area covered by the two rectangles.
The first rectangle is defined by its **bottom-left** corner `(ax1, ay1)` and its **top-right** corner `(ax2, ay2)`.
The second rectangle is defined by its **bottom-left** corner `(bx1, by1)` and its **top-right** corner `(bx2, by2)`.
## Examples
### Example 1:

**Input**: ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2
**Output**: 45
### Example 2:
**Input**: ax1 = -2, ay1 = -2, ax2 = 2, ay2 = 2, bx1 = -2, by1 = -2, bx2 = 2, by2 = 2
**Output**: 16
## Constraints:
- $-10^4\leq ax1\leq ax2\leq 10^4$
- $-10^4\leq ay1\leq ay2\leq 10^4$
- $-10^4\leq bx1\leq bx2\leq 10^4$
- $-10^4\leq by1\leq by2\leq 10^4$
## Code
```c=
#define Square(x1, x2, y1, y2) ((x2 - x1) * (y2 - y1))
#define Large1(a1, b1) (a1 < b1 ? b1 : a1)
#define Min2(a2, b2) (a2 < b2 ? a2 : b2)
int CrossDistance(int a1, int a2, int b1, int b2) {
if ((b1 > a2) || (a1 > b2))
return 0;
return Min2(a2, b2) - Large1(a1, b1);
}
int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
return Square(ax1, ax2, ay1, ay2) + Square(bx1, bx2, by1, by2) -
CrossDistance(ax1, ax2, bx1, bx2) * CrossDistance(ay1, ay2, by1, by2);
}
```
## Complexity
|Space |Time |
|- |- |
|$O(1)$|$O(1)$|
## Result
- Runtime: 4 ms, 85.71%
- Memory Usage: 5.6 MB, 42.86%