窗口点击模拟a
【问题描述】
在计算机屏幕上,有N 个窗口。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。当你用鼠标点击屏幕上一个点的时候,若其在窗口内,你就选择了处于被点击位置所属的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变。如果你点击的位置不属于任何窗口,则系统会忽略你这次点击。编写一个程序模拟点击窗口的过程:先从标准输入读入窗口的个数,窗口编号和位置(以窗口的左上角和右下角的坐标表示,先输入的窗口层次高),然后输入点击的次数和位置(以点击的坐标表示),编写程序求得经过上述点击后窗口的叠放次序。
假设:
1、屏幕的左下角作为X轴和Y轴坐标原点,即坐标为(0,0),所有输入的坐标数值都是整数,并且都大于等于0,小于等于1000。
2、输出窗口的叠放次序时从最后点击后最顶层的窗口编号开始按层次依次输出;
3、输入的窗口个数大于0并且小于等于10,点击次数大于0并且小于等于20。
【输入形式】
先输入窗口的个数,然后从下一行开始分行输入五个整数分别表示各个窗口编号和左上角的横坐标和纵坐标,以及右下角的横坐标和纵坐标,各整数之间以一个空格分隔;
再输入点击次数,并且从下一行开始分行输入两个整数分别表示点击处的横坐标和纵坐标,两个整数之间以一个空格分隔。最后一对坐标后也有回车换行。
【输出形式】
输出窗口的叠放次序时从最后点击后最顶层的窗口编号开始按层次依次输出,各个编号之间以一个空格分隔,最后一个编号后的空格可有可无。
【样例输入】
4
1 43 56 70 31
2 50 50 80 24
3 23 42 63 13
4 57 62 90 36
5
47 28
73 40
60 38
72 52
35 56
【样例输出】
4 2 3 1
【样例说明】
输入的模拟屏幕上有4个窗口,最顶层窗口的左上角和右下角的坐标分别为(43,56)和(70,31),其编号为1,下面各层窗口的左上角和右下角分别为(50,50)和(80,24),(23,42)和(63,13),(57,62)和(90,36),编号分别为2、3、4。第一次点击点坐标为(47,28),由于该点只落在了编号为3的窗口内,所以该窗口被激活变成了顶层窗口,窗口叠放次序变为(3,1,2,4);第二次点击在(73,40),落在编号为2和4的重叠区域,由于2号窗口在4号窗口上方,所以这次点击激活了2号窗口,其变为顶层窗口,这时窗口叠放次序为(2,3,1,4);第三次点击在(60,38),该区域是所有窗口的重叠区域,当然也点击在了顶层2号窗口内,窗口叠放次序没有变化;第四次点击在(72,52),该点只落在了4号窗口内,所以4号窗口又被激活成为顶层窗口,窗口叠放次序变为(4,2,3,1);第五次点击在(35,56),不属于任何窗口,所以没有改变窗口叠放次序。这时4号窗口为顶层窗口,向下依次为2、3和1号窗口。
【评分标准】要求模拟点击窗口的过程,求得最终的窗口叠放次序,提交程序文件名为windows.c或wndows.cpp。
#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <vector> #include <stdlib.h> #include <cstdlib> #include <string.h> #include <string> #include <cmath> #include <stack> #include <time.h> #include <vector> using namespace std; + ][ + ]; + ]; int n; struct rectangle { int a, b, c, d; int index; }rec[ + ]; void first(int a) { ; while (order[i] != a) i++; ) { order[i] = order[i - ]; i--; } order[] = a; } void print(int a, int b, int c, int d, int e) { for (int i = a; i <= c; i++) { for (int j = b; j >= d; j--) { m[i][j] = e; } } } int main() { int a, b, c, d, e; stack<int> mystack; cin >> n; ; i <= n; i++) { scanf("%d %d %d %d %d", &rec[i].index, &rec[i].a, &rec[i].b, &rec[i].c, &rec[i].d); order[i] = i; } ; i--) { print(rec[i].a, rec[i].b, rec[i].c, rec[i].d, rec[i].index); } int nn; cin >> nn; int p1, p2; ; i < nn; i++) { scanf("%d %d", &p1, &p2); ) { int t = m[p1][p2]; print(rec[t].a, rec[t].b, rec[t].c, rec[t].d, rec[t].index); first(t); } } ; i <= n; i++) { cout << order[i] << " "; } ; }
窗口点击模拟a的更多相关文章
- Windows 点击 模拟
点击模拟 安卓模拟器 爬虫
- [Android]对话框样式Activity获得窗口外点击事件
Dialog除了使用Dialog类来实现之外,还可以使用Dialog样式的Activity来实现,只需要在注册Activity时指明theme为adnroid:Theme.Dialog就行,这样的Di ...
- PyQt(Python+Qt)学习随笔:在一个窗口点击按钮弹出另一个窗口的实现方法及注意事项
在Qt Designer中定义了两个窗口,一个主窗口一个弹出窗口,需要实现在主窗口点击一个按钮时弹出弹出窗口. 经老猿验证: 1.弹窗的窗口类型无特殊要求,只要是QWidget等窗口部件就可以,也可以 ...
- Duilib 实现窗口点击关闭确认退出提示
此功能是记住用户的操作,在用户点击关闭时是真退出程序还是最小化到托盘,我们常见的PC客户端都有此功能,例如:IMO客户端.网易云音乐 我自己的项目中也要实现此功能,在此总结一下,最终效果: .h文件 ...
- herf窗口点击跳转
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Flex里监听mouseDownOutside事件解决弹出窗口点击空白关闭功能
其实当用户在使用 PopUpManager 打开的某个组件外部单击时,会从该组件分派一个mouseDownOutside事件 监听该事件就能实现点击空白处关闭窗口的功能 this.addEventLi ...
- a标签不用点击模拟跳转url。
因为请求到数据前要判断用户是否是登录状态, 所以就想页面数据请求成功,就跳转到登录页面, 就用了location.href = url. 结果因为同源策略不能访问, 没想到a标签竟然可以直接跳转这个U ...
- [Selenium]通过Selenium实现在当前浏览器窗口点击一个图标之后,弹出另外一个窗口,关闭这个窗口,再回到原来的窗口进行操作
public void clickReportIcon(){ String initialWindowHandle = driver.getWindowHandle(); //保存原始的浏览器窗口 p ...
- winform 窗口点击窗体任意位置移动窗体
private bool _isDown; private Point _mousePoint; private void Users_MouseDown(object sender, MouseEv ...
随机推荐
- hdu 6053 TrickGCD(筛法+容斥)
TrickGCD Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- arch初认识
在这里下载最新的iso镜像,一个iso里面已经包括了32和64位. 来者不善. 进去后竟然是进入字符界面,并且给各位留了一个install.txt,果然..==! 好吧,粗略看下install.txt ...
- 【dlbook】实践方法论
[性能度量] 使用什么误差度量? 目标性能大致为多少? [默认的基准模型] 首先尝试分段线性单元,ReLU以及扩展. SGD一般是合理的选择,选加入动量的版本,衰减方法不一. 批标准化在优化出现问题时 ...
- Linux:LAMP搭建DISCU!论坛
LAMP搭建DISCU!论坛 试验机为centos6.8 i686 应用的包 mysql-5.1.73-linux-i686-glibc23.tar.gz httpd-2.2.24.tar.bz2 p ...
- LitJson 不支持 float 类型数据
使用指引: 在 Unity 中使用 Best HTTP 插件的 LitJson 发送一些 Json格式数据给服务器,使用方式很简单: string jsonDataPost = JsonMapper. ...
- [置顶]
Android 关于SP读取与存储正确打开方式?
一.存储方式分类:SharedPreferences存储 二.SharedPreferences存储 1.特点 ①存储单一数据,例如数值,字符串,布尔 ②文件:/date/date/包名/shared ...
- iOS开发之如何在Xcode中显示断点堆栈
昨天有人问我在Xcode中打断点后怎么查看堆栈,今天就简单的聊聊. 首先解释一下,什么是堆栈? 堆:顺序随意:栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式 ...
- phpstorm、webstorm配置less编译器
1. node.js 安装包 https://nodejs.org/en/download/ 1) 安装js解析器node.js.直接下一步就ok了. 2) 将npm压缩包解压,找到里面的les ...
- java 实现共享锁和排它锁
一直对多线程有恐惧,在实现共享锁和排它锁之后,感觉好了很多. 共享锁 就是查询的时候,如果没有修改,可以支持多线程查询: 排它锁 就是修改的时候,锁定共享锁,停止查询,同时,锁定排它锁,只 ...
- Win32 程序在启动时激活前一个启动程序的窗口
UWP 程序天生单实例.当然,新 API (10.0.17134)开始也提供了多实例功能.不过,传统 Win32 程序可就要自己来控制单实例了. 本文介绍简单的几个 Win32 方法调用,使 Win3 ...