题目好长┭┮﹏┭┮就是模拟窗口点击的过程;
首先初始化n个窗口,记录其左下角和右上角的坐标。
每输入的一个新窗口,它位于其它窗口的最顶层,将它所处的坐标区域设为它的窗口编号值。以此类推。
输入点击窗口位置的x,y坐标,若该点的窗口编号值不为零,输出该点所在的窗口编号。点击该窗口后,该窗口位于最顶层,将它所在窗口范围设为对应的窗口编号。
代码实现:
#include<iostream>
using namespace std;
struct point{
int num;
int x1,y1,x2,y2;
};
point p[15];
int window[2600][1500];
int main(){
int n,m;
int x,y,index;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>p[i].x1>>p[i].y1>>p[i].x2>>p[i].y2;
p[i].num=i;
for(int j=p[i].x1;j<=p[i].x2;j++)
for(int k=p[i].y1;k<=p[i].y2;k++)
window[j][k]=i;
}
for(int i=0;i<m;i++){
cin>>x>>y;
if(window[x][y]!=0){
cout<<window[x][y]<<endl;
index=window[x][y];
for(int j=p[index].x1;j<=p[index].x2;j++)
for(int k=p[index].y1;k<=p[index].y2;k++)
window[j][k]=index;
}
else cout<<"IGNORED"<<endl;
}
}