题目描述
FJ 为了让自己从无穷无尽的犁田工作中解放出来,于是买了个新机器人帮助他犁田。这个犁田机器人一次只能犁一个边长为整数的长方形的田地。
田地本身是一个边长为整数的长方形,且会被均等分割为多个 1×1 的小方格。这些方格的边和田地的长或宽平行。田地自上而下有 n 排方格,自左向右有 m列方格。
FJ 的 k 个指令用 4 个整数:x1,y1,x2,y2 表示,其中 (x1,y1) 是要犁田的长方形的左上角坐标,表示自上而下第 x1 行,自左向右第 y1列,同理,(x2,y2)是要犁田的长方形的右下角坐标。机器人会对所有的横坐标在 x1∼x2 之间,且纵坐标在 y1∼y2
需要注意的是,这个长方形可能会比你想象的多一行一列,因为从第 x1 排到第 x2 排一共有 x2−x1+1 排,而不是 x2−x1 排)。
FJ 想知道,机器人执行了所有 k 条指令后,最后有多少个方格的地被犁过。
输入描述
第 11 行 33 个整数 n,m,k
第 i+1 (i=1∼k) 行,每行 4 个整数 x1,y1,x2,y2,描述第 i 次犁田指令。
输出描述
一个整数,代表被犁过的格子数。
样例1
输入
6 4 2 1 1 2 4 1 3 5 4
输出
14
提示
样例中,田地从上往下高度为 6,从左向右宽度为 4。FJ 下的 2 次命令如下图所示,田地分别被犁成红色和绿色。注意:被犁过的地看起来都是一样的,标出颜色只是为了更清晰地看出最近一次被犁的长方形区域。
可见,一共 14 个方格的地被犁过。
1≤n,m≤240,1≤k≤200
对所有操作,保证 1≤x1≤x2≤n,1≤y1≤y2≤m
参考答案:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[250][250];
int main(){
int n,m,k;
cin>>n>>m>>k;
for(int x=1;x<=k;x++){
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
for(int i=x1;i<=x2;i++){
for(int j=y1;j<=y2;j++){
a[i][j] = 1;
}
}
}
int cnt =0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==1){cnt++;}
}
}
cout<<cnt;
return 0;
}
谢谢观看~