问题描述:
小蓝有一个 n * m 大小的矩形水域,小蓝将这个水域划分为 n 行 m 列,行数从 1 到 n 标号,列数从 1 到 m 标号。每行和每列的宽度都是单位 1 。
现在,这个水域长满了水草,小蓝要清理水草。
每次,小蓝可以清理一块矩形的区域,从第 r1 行(含)到第 r2 行(含)的第 c1 列(含)到 c2 列(含)。
经过一段时间清理后,请问还有多少地方没有被清理过。
输入格式:
输入第一行包含两个整数 n, m,用一个空格分隔。
第二行包含一个整数 t ,表示清理的次数。
接下来 t 行,每行四个整数 r1, c1, r2, c2,相邻整数之间用一个空格分隔,表示一次清理。请注意输入的顺序。
输出格式:
输出一行包含一个整数,表示没有被清理过的面积。
样例输入1:
2 3
2
1 1 1 3
1 2 2 2
样例输出1:
2
样例输入2:
30 20
2
5 5 10 15
6 7 15 9
样例输出2:
519
评测用例规模与约定:
对于所有评测用例,1 <= r1 <= r2 <= n <= 100, 1 <= c1 <= c2 <= m <= 100, 0 <= t <= 100。
代码如下:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int st[105][105] = {0};
int main()
{
int n,m;
cin >> n >> m;
int x1,y1,x2,y2;
int t;
cin >> t;
int cnt = 0;
while(t--){
cin >> x1 >> y1 >> x2 >> y2;
for(int i=x1;i<=x2;i++){
for(int j=y1;j<=y2;j++){
if(st[i][j] == 0){
st[i][j] = 1;
cnt++;
}
}
}
}
cout << n*m-cnt << endl;
return 0;
}