题目大意:从后往前输入 N个窗口每个窗口有4个坐标x1,y1,x2,y2 x1,y1表示左上角坐标,x2,y2表示窗口右上角坐标。然后输入M个鼠标点击的坐标位置。输出每次鼠标点击的窗口编号。输入以0结束。
解题报告:
建立一个map 初始时标记为-1,每输入一个窗口则用窗口编号刷新。之后对于每次鼠标点击,输出map 中的值就OK了。
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int H=150;
int map[H][H];
//定义一个窗口结构体
typedef struct{
int x1;
int y1;
int x2;
int y2;
} Window;
int main(){
int N,M;//测试用例数 鼠标点击数
Window w[H];
int x,y;
while(scanf("%d",&N)&&N!=0){
memset(map,-1,sizeof(map));//初始化地图
for(int i=0;i<N;i++){
scanf("%d%d%d%d",&w[i].x1,&w[i].y1,&w[i].x2,&w[i].y2);
for(int j=w[i].x1;j<=w[i].x2;j++)
for(int k=w[i].y1;k<=w[i].y2;k++)
map[j][k]=i;
}
scanf("%d",&M);
for(int i=0;i<M;i++){
scanf("%d%d",&x,&y);
printf("%d\n",map[x][y]);
}
}
return 0;
}