【CCF-CSP】201403-2 窗口(模擬)

【CCF-CSP】201403-2 窗口

題目

先給出 n 個窗口(窗口的左邊範圍),之後有 m 次點擊(即一個座標),每次點擊輸出當前座標最頂層的窗口序號,同時將當前窗口移動到最頂層。

分析

用鏈表存窗口的優先級,每次點擊按照優先級遍歷所有窗口,看自己在哪個窗口的範圍,並將找到的窗口移動到鏈表的前端。

#include <bits/stdc++.h>
using namespace std;
#define d(x) cout<<x<<endl

typedef long long ll;
const int INF = 0x3f3f3f3f;
const int N = 20;

int n, m;

struct node {
	int a, b, c, d;
} arr[N];

int main() {
	scanf("%d%d", &n, &m);
	list<int> l;
	for (int i = 1; i <= n; i++) {
		scanf("%d%d%d%d", &arr[i].a, &arr[i].b, &arr[i].c, &arr[i].d);
		l.push_front(i);
	}
	while (m--) {
		int x, y, flag = 0;
		scanf("%d%d", &x, &y);
		for (auto it = l.begin(); it != l.end(); it++) {
			if (x >= arr[*it].a && x <= arr[*it].c && y >= arr[*it].b && y <= arr[*it].d) {
				l.push_front(*it); l.erase(it);
				printf("%d\n", *it); flag = 1; break;
			} 
		}
		if (flag == 0) printf("IGNORED\n");
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章