题目描述:
大哈有一面 n * n 的广告墙,他往墙上贴 m 张广告,广告之间有些部分会相互重叠,问墙上的每个点上覆盖了几张广告
输入格式:
第一行两个整数 n 和 m
接下来 m 行 ,每行给出 x1 ,y1 , x2 , y2 ,代表这张广告的左上角是(x1,y1)和右下角是(x2,y2)
输出格式:
输出 n 行,每行 n 个正整数,
第 i 行 第 j 个 表示 (i , j) 这个点被几张广告覆盖
样例输入1:
5 3 2 2 3 3 3 3 5 5 1 2 1 4
样例输出1:
0 1 1 1 0 0 1 1 0 0 0 1 2 1 1 0 0 1 1 1 0 0 1 1 1
C++14
提交代码
#include<bits/stdc++.h>
using namespace std;
int n,m,x1,y_1,x2,y2,a[4000][4000],d[4000][4000];
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x1>>y_1>>x2>>y2;
d[x1][y_1]++;d[x2+1][y_1]–;d[x1][y_1+1]–;d[x2+1][y2+1]++;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+d[i][j]<<’ ‘;
cout<<a[i][j]<<’ ';
}
cout<<endl;
}
return 0;
}