【问题描述】

在计算机屏幕上,有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的更多相关文章

  1. Windows 点击 模拟

    点击模拟  安卓模拟器  爬虫

  2. [Android]对话框样式Activity获得窗口外点击事件

    Dialog除了使用Dialog类来实现之外,还可以使用Dialog样式的Activity来实现,只需要在注册Activity时指明theme为adnroid:Theme.Dialog就行,这样的Di ...

  3. PyQt(Python+Qt)学习随笔:在一个窗口点击按钮弹出另一个窗口的实现方法及注意事项

    在Qt Designer中定义了两个窗口,一个主窗口一个弹出窗口,需要实现在主窗口点击一个按钮时弹出弹出窗口. 经老猿验证: 1.弹窗的窗口类型无特殊要求,只要是QWidget等窗口部件就可以,也可以 ...

  4. Duilib 实现窗口点击关闭确认退出提示

    此功能是记住用户的操作,在用户点击关闭时是真退出程序还是最小化到托盘,我们常见的PC客户端都有此功能,例如:IMO客户端.网易云音乐 我自己的项目中也要实现此功能,在此总结一下,最终效果: .h文件 ...

  5. herf窗口点击跳转

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Flex里监听mouseDownOutside事件解决弹出窗口点击空白关闭功能

    其实当用户在使用 PopUpManager 打开的某个组件外部单击时,会从该组件分派一个mouseDownOutside事件 监听该事件就能实现点击空白处关闭窗口的功能 this.addEventLi ...

  7. a标签不用点击模拟跳转url。

    因为请求到数据前要判断用户是否是登录状态, 所以就想页面数据请求成功,就跳转到登录页面, 就用了location.href = url. 结果因为同源策略不能访问, 没想到a标签竟然可以直接跳转这个U ...

  8. [Selenium]通过Selenium实现在当前浏览器窗口点击一个图标之后,弹出另外一个窗口,关闭这个窗口,再回到原来的窗口进行操作

    public void clickReportIcon(){ String initialWindowHandle = driver.getWindowHandle(); //保存原始的浏览器窗口 p ...

  9. winform 窗口点击窗体任意位置移动窗体

    private bool _isDown; private Point _mousePoint; private void Users_MouseDown(object sender, MouseEv ...

随机推荐

  1. (转载) jQuery页面加载初始化的3种方法

    jQuery 页面加载初始化的方法有3种 ,页面在加载的时候都会执行脚本,应该没什么区别,主要看习惯吧,本人觉得第二种方法最好,比较简洁. 第一种: $(document).ready(functio ...

  2. Java复习1.基本知识

    Java语言概述 20131003 开头语: 开发领域,重要的编程语言基本都是C/C++,然后就是Java, C/C++就不用说了,另外掌握Java对你是有很大的帮助的,而且也会扩宽你的择业范围.同时 ...

  3. 十八、dbms_repair(用于检测,修复在表和索引上的损坏数据块)

    1.概述 作用:用于检测,修复在表和索引上的损坏数据块. 2.包的组成 1).admin_tables语法:dbms_repair.admin_tables(table_name in varchar ...

  4. Markdown_04_折叠语法

    目录 一.折叠语法 参考资料 一.折叠语法 主要使用的是 html5的 details标签 (1)示例如下: <details> <summary>折叠文本</summa ...

  5. MySQL20个经典面试题

    MySQL20个经典面试题 Part2:经典题目 1.MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联: 2.MySQL中myisam与innodb的区别,至少5点 (1).问5点不 ...

  6. jQuery实现点击式选项卡

    参考:jQuery权威指南jQuery初步jQuery选择器jQuery操作domjQuery操作dom事件jQuery插件jQuery操作AjaxjQuery动画与特效jQuery实现导航栏jQue ...

  7. SSH服务:packet_write_wait: Connection to 67.218.143.160 port 22: Broken pipe错误处理

    1.在~/.ssh/config配置文件中添加 IPQoS lowdelay throughput 2.在/etc/ssh/ssh_config配置文件中添加 IPQoS lowdelay throu ...

  8. Web访问控制

    最近某婚介公司的实习生赵大胖的领导姚无发给赵大胖安排了一个任务: 给网站加上访问控制,游客不能访问看到美女的资料,只有注册的会员才能浏览. 赵大胖一时没有很好的思路,然后找到了研发组大佬老郑头. 老郑 ...

  9. 在ROS Kinetic中使用Gazebo 8进行机器人仿真

    在ROS Kinetic中使用Gazebo 8比在ROS Indigo中使用Gazebo 3-8要容易一些. 目前最新稳定版本的Gazebo8为8.1.1. 安装流程如下: $  sudo apt-g ...

  10. ss-libev 源码解析udp篇 (1)

    shadowsocks-libev udp转发原理简介 ss_local作为一个sock5服务器,接收来自socks5客户端的数据包.在ss_local启动后,即创建一个udp socket,并bin ...