【问题描述】

在计算机屏幕上,有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. [Android]Adb connection Error:远程主机强迫关闭了一个现有的连接

    目前,针对Android手机研发的刷机软件和手机助手软件,都会调用Google开发的adb工具与手机进行通信. 有的刷机软件或者手机助手软件,在系统里会常驻一个服务,独占adb的端口(5037),这样 ...

  2. HDU 5831 Rikka with Parenthesis II (贪心)

    Rikka with Parenthesis II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  3. PHP获取随机数的函数rand()和mt_rand()

    rand()函数用户获取随机数,具体用法如下: rand()可以设置0个参数或者两个参数,如rand($min,$max),$min表示从XX开始取值,$max表示最大只能为XX 例如: <?p ...

  4. Mysql数据库的增删改查

    在运行程序之前需要在mysql数据库中创建test数据库,如下图所示: 下面是具体是实现程序: package News; import java.sql.Connection; import jav ...

  5. [转载]Spring源码下载地址

    转载自:http://blog.csdn.net/liuzheng2684/article/details/6534722,谢谢! 今天想下载一下spring的源代码,登录到Spring官网,傻眼了, ...

  6. 【机器学习】集成学习之sklearn中的xgboost基本用法

    原创博文,转载请注明出处!本文代码的github地址    博客索引地址 1.数据集 数据集使用sklearn自带的手写数字识别数据集mnist,通过函数datasets导入.mnist共1797个样 ...

  7. JVM原理二----JAVA虚拟机体系结构

    组成: 指令集,寄存器,栈,无用单元收集(GC),方法区域.JAVA核心 1,指令集:这个不太清楚 2,寄存器:和处理器中的寄存器类似 pc:Java程序计数器. optop:指向*作数栈顶端的指针. ...

  8. 通过反编译让SpecFlow支持多层属性值的验证

    需求:在使用SpecFlow时,我希望能对目标对象所关联的对象属性进行验证,但SpecFlow(Version 1.9.0)无法实现.如图中红框,可以对专户所属的金融机构的名称进行验证. 反编译步骤 ...

  9. C语言中库函数strstr的实现

    在C语言中库函数strstr()函数表示在一个字符串str1中查找另一个字符串str2,如果查到则返回str2在str1中首次出现的位置,如果找不到则返回null. char* strstr(char ...

  10. 使用SDWebImage加载大量图片后造成内存泄露的解决办法

    SDWebImage的知名度就不用说了,github上近10k的star,国内外太多的App使用其进行图片加载. 但是最近在使用过程中发现,在UITableView中不断加载更多的内容,使用SDWeb ...