#include<stdio.h>
int main(){
int n,m,x,y;
scanf("%d%d%d%d",&n,&m,&x,&y);
int num[y]={0};
int last_time[y]={0};
int location[2];
int area[x][4]={0};
for(int i=1;i<=x;i++){
for(int a=0;a<4;a++){
scanf("%d",&area[i-1][a]);
}
for(int i=1;i<=y;i++){
for(int a=0;a<2;a++){
scanf("%d",&location[a]);
}
for(int j=1;j<=x;j++){
if((area[j-1][0]<=location[0]&&area[j-1][2]>=location[0]&&area[j-1][1]<=location[1]&&area[j-1][3]>=location[1])){
num[i-1]+=1;
last_time[i-1]=i;
}
}
if(num[i-1]==0){
printf("N");
}
else{
printf("Y %d %d",num[i-1],last_time[i-1]);
}
printf("\n");
}
return 0;
}
我的想法是用num和last_time两个数组储存关键点被炸次数和上一次被炸的轮次,用location储存关键点的xy坐标,area储存轰炸区域左下角和右上角点的横纵坐标,在循环中判断关键点的坐标是否在左下右上点的横纵坐标之间,即是否x1<x<x2,y1<y<y2,若是,则次数加一并保存轮次