题目思路
1、用List存储所有的窗口,便于实现窗口的位置变化
2、自顶向下遍历所有窗口,找到x,y所有窗口的位置
3、if flag==true,表示x,y属于现有窗口中的一个,先删除在加回去,实现窗口的置顶
4、if flag==false,表示x,y不属于任何一个窗口,输出IGNORED 即可
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
List<Node> list=new ArrayList<>();
int n=scan.nextInt();
int m=scan.nextInt();
for(int i=1;i<=n;i++)
{
int x1=scan.nextInt();
int y1=scan.nextInt();
int x2=scan.nextInt();
int y2=scan.nextInt();
list.add(new Node(x1,y1,x2,y2,i));
}
while(m--!=0)
{
int x=scan.nextInt();
int y=scan.nextInt();
//自顶向下判断x,y属于哪个窗口
boolean flag=false;
int k;
for(k=n-1;k>=0;k--)
{
int x1=list.get(k).x1,y1=list.get(k).y1,x2=list.get(k).x2,y2=list.get(k).y2;
if(x>=x1&&x<=x2&&y>=y1&&y<=y2)
{
flag=true;
break;
}
}
if(flag)
{
System.out.println(list.get(k).p);
//将被点击的窗口置于最顶层,先删除在加入就行
Node t=list.get(k);
list.remove(k);
list.add(t);
}
else
System.out.println("IGNORED");
}
scan.close();
}
private static class Node
{
private int x1;
private int y1;
private int x2;
private int y2;
private int p;
public Node(int x1,int y1,int x2,int y2,int p)
{
this.x1=x1;
this.y1=y1;
this.x2=x2;
this.y2=y2;
this.p=p;
}
}
}