SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签115

  • 分类37

  • 归档319

  • 关于

  • 搜索

CCF-CSP:201403-2窗口

发表于 2020-01-25 更新于 2021-10-29 分类于 计算机 , 算法题 , CCF-CSP 阅读次数: Valine:
本文字数: 2k 阅读时长 ≈ 2 分钟

CCF-CSP题目汇总

题目

试题编号: 201403-2
试题名称: 窗口
时间限制: 1.0s
内存限制: 256.0MB

问题描述

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

输入格式

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

输出格式

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

样例输入

1
2
3
4
5
6
7
8
3 4
0 0 4 4
1 1 5 5
2 2 6 6
1 1
0 0
4 4
0 5

样例输出

1
2
3
4
2
1
1
IGNORED

样例说明

  第一次点击的位置同时属于第 1 和第 2 个窗口,但是由于第 2 个窗口在上面,它被选择并且被置于顶层。
  第二次点击的位置只属于第 1 个窗口,因此该次点击选择了此窗口并将其置于顶层。现在的三个窗口的层次关系与初始状态恰好相反了。
  第三次点击的位置同时属于三个窗口的范围,但是由于现在第 1 个窗口处于顶层,它被选择。
  最后点击的 (0, 5) 不属于任何窗口。

解答

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <algorithm>

using namespace std;

typedef struct Win {
int top;
int id;
int x1, x2, y1, y2;
}Win;

bool cmp(Win w1, Win w2) {
return w1.top > w2.top;
}

int main() {

int n, m, top = 0;
Win w[11];

cin >> n >> m;

for (int i = 0; i < n; i++) {
cin >> w[i].x1 >> w[i].y1 >> w[i].x2 >> w[i].y2;
w[i].id = i + 1;
w[i].top = top++;
}

sort(w, w + n, cmp);

for (int i = 0; i < m; i++) {
int f = 1;
int cx, cy;
cin >> cx>>cy;
for (int j = 0; j < n; j++) {
if (w[j].x1 <= cx && cx <= w[j].x2 && w[j].y1 <= cy && cy <= w[j].y2) {
cout << w[j].id << endl;
w[j].top = top++;
sort(w, w + n, cmp);
f = 0;
break;
}
}

if (f)
cout << "IGNORED" << endl;
}

return 0;
}
-------- 本文结束 感谢阅读 --------
相关文章
  • CCF-CSP:201409-3字符串匹配
  • CCF-CSP:201403-3命令行选项
  • CCF-CSP/201312-3最大的矩形
  • CCF-CSP:201403-1相反数
  • CCF-CSP/201409-2画图
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: CCF-CSP:201403-2窗口
  • 本文作者: SiriYang
  • 创建时间: 2020年01月25日 - 18时01分
  • 修改时间: 2021年10月29日 - 18时10分
  • 本文链接: https://blog.siriyang.cn/posts/20200125181950id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
算法题 CCF-CSP
C/CPP参考文档:C Math
CCF-CSP:201403-1相反数
  • 文章目录
  • 站点概览
SiriYang

SiriYang

努力搬砖攒钱买镜头的摄影迷
319 日志
33 分类
88 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 作品商铺

  1. 题目
    1. 问题描述
    2. 输入格式
    3. 输出格式
    4. 样例输入
    5. 样例输出
    6. 样例说明
  2. 解答
    1. 代码
蜀ICP备19008337号 © 2019 – 2025 SiriYang | 1.7m | 25:41
0%