题目背景
一个大小为N*M的城市遭到了X次轰炸,每次都炸了一个每条边都与边界平行的矩形。
题目描述
在轰炸后,有Y个关键点,指挥官想知道,它们有没有受到过轰炸,如果有,被炸了几次,最后一次是第几轮。
输入格式
第一行,四个整数:n、m、x、y。
以下x行,每行四个整数:x1、y1、x2、y2,表示被轰炸的矩形的左上角坐标和右下角坐标(比如1 3 7 10就表示被轰炸的地方是从(1,3)到(7,10)的矩形)。
再以下y行,每行两个整数,表示这个关键点的坐标。
输出格式
共y行,
每行第一个字符为Y或N,表示是否被轰炸,若为Y,在一个空格后为两个整数,表示被炸了几次和最后一次是第几轮。
输入输出样例
输入 #1
10 10 2 3
1 1 5 5
5 5 10 10
3 2
5 5
7 1
输出 #1
Y 1 1
Y 2 2
N
说明/提示
数据很弱!!!直接模拟!!!!
1<=N,M<=100
##这道题挺简单的,直接用二维数组记录值,安装题意模拟就好
#include<bits/stdc++.h>
using namespace std;
const int MAX = 102;
int n,m,x,y;
int point[MAX][MAX]={0};//记录每个区域内的点最后一次被炸的轮数
int times[MAX][MAX]={0};//第一次编写时,误以为被炸的次数和最后轮数应该是相同的
//经过修改加了这个变量记录被炸次数
int main(){
int flag=0;
cin>>n>>m>>x>>y;
for(int i=1;i<=x;i++){
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
for(int j=x1;j<=x2;j++){
for(int k=y1;k<=y2;k++){
times[j][k]++;//对该区域内的点被炸的次数都加一
point[j][k]=i;//记录当前轮数
}
}
}
while(y--){
int xn,yn;
cin>>xn>>yn;
if(point[xn][yn]>0){
cout<<"Y "<<times[xn][yn]<<" "<<point[xn][yn]<<endl;
}else{
cout<<"N"<<endl;
}
}
return 0;
}