201403-2 窗口
题目

思路
用一个数组layof[i]表示第i层是哪个窗口。这样也方便从顶层开始判断鼠标是否点在了该窗口。
AC代码如下
#include<cstdio>
#include<map>
using namespace std;
struct window{
int stx,sty,edx,edy;
}win[12];
bool InWindow(int a,int b,int i){
if(win[i].stx<=a&&win[i].sty<=b){
if(win[i].edx>=a&&win[i].edy>=b)
return true;
}
return false;
}
int main(){
int n,m,layof[12];
int a,b;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d%d",&a,&b);
win[i].stx=a;
win[i].sty=b;
scanf("%d%d",&a,&b);
win[i].edx=a;
win[i].edy=b;
layof[n-i]=i;
}
for(int i=0;i<m;i++){
scanf("%d%d",&a,&b);
int j;
for(j=0;j<n;j++){
if(InWindow(a,b,layof[j])){
printf("%d\n",layof[j]);
int temp=layof[j];
for(int k=j;k>0;k--) layof[k]=layof[k-1];
layof[0]=temp;
break;
}
}
if(j==n) printf("IGNORED\n");
}
return 0;
}