#OD104. 矩形绘制

矩形绘制

题目解析和算法源码

华为OD机试 - 矩形绘制(Java & JS & Python & C & C++)_伏城之外的博客-CSDN博客

题目描述

实现一个简单的绘图模块,绘图模块仅支持矩形的绘制和擦除

  • 当新绘制的矩形与之前的图形重叠时,对图形取并集
  • 当新擦除的矩形与之前的图形重叠时,对图形取差集

给定一系列矩形的绘制和擦除操作,计算最终图形的面积。

下面给出示例1和示例2的图示

示例1:

![](file://QunuRXLXQw3eXkTxIQ1iZ.png)

两步绘制的矩形如左侧所示,取并集后得到的图形如右侧所示

示例2

![](file://p7Job8Lb-evzPblGNRRKz.png)

第一步绘制的矩形在左侧用实线表示,第二步擦除的矩形在左侧用虚线表示,取差集后得到图像如右侧所示

输入描述

绘图模块采用二维坐标系,输入第一行位操作的数量 N,接下来的 N 行格式为:

  • d x1 y1 x2 y2,d表示进行绘制操作,(x1, y1)为矩形左上角坐标,(x2, y2)为矩形右下角坐标
  • e x1 y1 x2 y2,e表示进行擦除操作,(x1, y1)为矩形左上角坐标,(x2, y2)为矩形右下角坐标

坐标为整数,且数据范围为 [-100, 100],用例保证坐标有效

输出描述

输出最终图形的面积

用例1

输入

2
d 0 2 2 0
d -1 1 1 -1

输出

7

用例2

输入

2
d 0 2 2 0
e -1 1 1 -1

输出

3