本文主要是介绍CSP认证201403-2窗口[C++题解]:模拟、结构体,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 题目解答
- 题目链接
题目解答
来源:acwing
分析:
- 用结构体来存每个窗口,存两个坐标和窗口序号。
- 在循环中更新窗口的序号,新点击的位于最上面,在代码中是序号n(数越大,表示窗口在前)
ac代码
#include<bits/stdc++.h>
using namespace std;
const int N = 15;int n, m;
struct Window{int x1, y1, x2, y2;int id;
}w[N];// 返回点在哪个窗口
// 注意:这里返回的是在结构体数组中的位置,而不是最终的窗口号
int get(int x, int y){for(int i = n; i; i--)if(x >= w[i].x1 && x <= w[i].x2 && y >= w[i].y1 && y <= w[i].y2)return i; return 0;// 找不到的话,返回0
}int main(){cin >> n >> m;for(int i = 1; i <= n; i++){int x1, y1, x2, y2;cin >> x1 >> y1 >> x2 >> y2;w[i] = {x1, y1, x2, y2, i};}while(m --){int x, y;cin >> x >> y;int t = get(x, y); //找最上面的窗口idif(!t) cout << "IGNORED"<<endl;else{cout << w[t].id << endl;// 模拟窗口更新,新点击的位于最上层,其他依次下移// 第t个窗口放到最上面auto r = w[t];for(int i = t; i <= n; i++) w[i] = w[i+1];w[n] = r;}}
}
题目链接
https://www.acwing.com/problem/content/3201/
这篇关于CSP认证201403-2窗口[C++题解]:模拟、结构体的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!