合工大 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;
}

  

时间: 2024-10-09 09:40:50

合工大 OJ 1322 窗口的相关文章

合工大OJ 1331 回文数

Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数. 任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止. 例如: 68变成154(68+86),再变成605(154+451),最后变成1111(605+506),而1111是回文数. 于是有数学家提出一个猜想: 不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数.至今为止还不知道这个猜

合工大OJ 1337 一加二减三

Description 题目描述:给一个串,形如一+二-三,求值 Input 第一行为一个正整数T,表示数据的组数,接下来有T行每行都是一个形如一+二-三的串,一,二,三均为正整数 Output 对于每个数据输出一行,为表达式的值 Sample Input 21+2-31+1-2 Sample Output 00 Hint 1<=一,二,三<=100 Source 2015新生杯~~ 1 #include<iostream> 2 #include<string> 3 u

合工大OJ 1330 种树

Description 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种有一棵树. 由于马路上有一些区域要用来建地铁.这些区域用它们在数轴上的起始点和终止点表示.已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分.现在要把这些区域中的树(包括区域端点处的两棵树)移走.你的任务是计算将这些树都移走后,马路上还有多少棵树. Input 输入的

合工大 OJ 1332 蛇形阵

Description 蛇形针回字阵: 如3*3: 回字阵: 7 6 5 8 1 4 9 2 3 Input 多组数据: 每一行一个正整数n(n为奇数,<26),代表n*n矩阵. Output 输出回字阵(字段宽度为4). Sample Input 5 Sample Output 21  20  19  18  17  22   7   6   5  16  23   8   1   4  15  24   9   2   3  14  25  10  11  12  13 Source 新生杯

2019合工大共创五套卷(数一数二数三)模拟卷一+答案PDF

资源链接:https://pan.baidu.com/s/1SVQJDfXmVt6u0xJhFPgC3Q合工大共创考研数学模拟卷,冲刺复习经典必备.数学1和3都是每年五套题,数学2每年只有三套题.现更新数一数二数三的模拟卷一,分享给大家!如下: 原文地址:http://blog.51cto.com/14093933/2325032

2019合工大超越五套卷数一全五套+数三模拟一PDF

资源链接:https://pan.baidu.com/s/1HU4UJKnL87qWnkcFu8JWBg合工大超越考研数学模拟卷数一全五套PDF以及数三模拟一PDF,分享给大家!超越模拟卷较共创模拟卷偏难,考研数学重基础,量力而行.如下: 原文地址:http://blog.51cto.com/14093933/2325480

利用selenium+chrome模拟登陆合工大信息门户并进行自动填写测评

最近学校要填写对于老师的评教,不填写的就无法进行下周的选课∑^)/ 我这么懒,自然不想一个一个点进去填写,想到最近在学爬虫,干脆写一个爬虫帮我弄算了 ╭~~~╮ (o~.~o) 首先打开我们学校的信息门户:http://my.hfut.edu.cn/(仅限校园网) 可以看到我们学校的北门\(0^◇^0)/ 可以看出来,用户名和密码还是很好填的,这个验证码就很麻烦了...... 我选择的方法是,直接保存屏幕截图,然后利用定位元素位置定量裁剪图片,然后利用图像识别识别图中验证码, 当然,直接选图片自

计算机(912 专业课)考研经验及资料总结

数学 ?? 目标 1 -- 总结题型,归纳小规律,什么情况选什么方法:思考多个知识点怎么衔接的 基础部分参考书 <张宇高等数学 18 讲> 张宇 <线性代数辅导讲义> 李永乐 <概率论辅导讲义> 王式安 <考研数学复习全书> 李永乐 <张宇 考研数学 题源探析经典 1000 题> 张宇 <数学基础过关 660 题> 李永乐 ?? 目标 2 -- 做真题,统计理解不深刻的知识点,再巩固知识点 真题相关练习 10 年真题 <数学历年

2016大连理工大学计算机考研经验

2016考研成绩已出,本人报考大连理工大学计算机科学与技术(本科也在大连理工),初试总分387排名第一,政治64,数学114,英语78,数据结构和计算机组成原理131.这个分数并不算高,现在记下本人复习的全过程,只为抛砖引玉,希望能给大家一点启发. 1.复习流程 数学: 114分不算高但也不算低,16数学有些偏难,手滑错了俩选择俩填空,后边错了半道线代和半道概率和四分之一道高数.复习时之前10年真题基本都在140左右.我们班有一个真题基本都在150的最后考了122. 第一个阶段,从3月开学开始到