zoukankan      html  css  js  c++  java
  • 合工大 OJ 1322 窗口

    窗口

     
     

    Description


    在某图形操作系统中,有N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。
    当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变。如果你点击的位置不属于任何窗口,则系统会忽略你这次点击。
    现在我们希望你写一个程序模拟点击窗口的过程。

    Input


    输入的第一行有两个正整数,即N 和M。(1 <= N <= 10,1 <= M <= 10)
    接下来N 行按照从最下层到最顶层的顺序给出N 个窗口的位置。每行包含四个非负整数x1, y1, x2, y2,表示该窗口的一对顶点坐标分别为(x1,y1) 和(x2, y2)。保证x1 < x2,y1 < y2。
    接下来M 行每行包含两个非负整数x; y,表示一次鼠标点击的坐标。
    题目中涉及到的所有点和矩形的顶点的x; y 坐标分别不超过2559 和1439。

    Output


    输出包括M 行,每一行表示一次鼠标点击的结果。如果该次鼠标点击选择了一个窗口,则输出这个窗口的编号(窗口按照输入中的顺序从1 编号到N);如果没有,则输出"IGNORED"(不含双引号)。

    Sample Input


    3 4
    0 0 4 4
    1 1 5 5
    2 2 6 6
    1 1
    0 0
    4 4
    0 5

    Sample Output


    2
    1
    1
    IGNORED

    Hint


    第一次点击的位置同时属于第1 和第2 个窗口,但是由于第2 个窗口在上面,它被选择并且被置于顶层。
    第二次点击的位置只属于第1 个窗口,因此该次点击选择了此窗口并将其置于顶层。现在的三个窗口的层次关系与初始状态恰好相反了。
    第三次点击的位置同时属于三个窗口的范围,但是由于现在第1 个窗口处于顶层,它被选择。
    最后点击的(0; 5) 不属于任何窗口。
     
     
    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    struct window{
    	int x1,y1;
    	int x2,y2;
    	int id;
    }; 
    
    void swap(window &a,window &b)
    {
    	window t;
    	t.x1=a.x1;t.y1=a.y1;t.x2=a.x2;t.y2=a.y2;t.id=a.id;
    	a.x1=b.x1;a.y1=b.y1;a.x2=b.x2;a.y2=b.y2;a.id=b.id;
    	b.x1=t.x1;b.y1=t.y1;b.x2=t.x2;b.y2=t.y2;b.id=t.id;
    }
    
    window w[12];
    
    void Adjust(window w[],int n,int x)
    {
    	for(int i=x;i<n;i++)
    		swap(w[i],w[i+1]);
    }
    
    int main()
    {
    	int n,m,ans;
    	while(cin>>n>>m) 
    	{
    		ans=0;
    		for(int i=1;i<=n;i++)
    		{
    			cin>>w[i].x1>>w[i].y1>>w[i].x2>>w[i].y2;
    			w[i].id=i;
    		}
    		for(int i=0;i<m;i++)
    		{
    			int a,b,j;
    			cin>>a>>b;
    			for(j=n;j>0;j--)
    			{
    				if(a>=w[j].x1 && a<=w[j].x2 && b>=w[j].y1 && b<=w[j].y2)
    				{
    					Adjust(w,n,j);
    					break;
    				}
    			}
    			if(j==0)
    				cout<<"IGNORED"<<endl;
    			else
    				cout<<w[n].id<<endl;
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    软件测试人员的年终绩效考核怎么应对
    收藏
    顶踩组件 前后两版
    订阅组件
    hdu 1963 Investment 完全背包
    hdu 4939 Stupid Tower Defense 动态规划
    hdu 4405 Aeroplane chess 动态规划
    cf 414B Mashmokh and ACM 动态规划
    BUPT 202 Chocolate Machine 动态规划
    hdu 3853 LOOPS 动态规划
  • 原文地址:https://www.cnblogs.com/wixy/p/5492332.html
Copyright © 2011-2022 走看看