//思路:通过四个数组将毯子的情况记录。然后用逆序的方法来找到最上面的一层毯子
上代码:
#include<bits/stdc++.h> using namespace std; int a[100050]; int b[100050]; int g[100050]; int k[100050]; int main() { int n,x, y; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i] >> b[i] >> g[i] >> k[i]; } cin >> x >> y; int ans = -1; //如果上面未曾覆盖直接输出为-1 for (int i = n; i >= 1; i--) //逆序查找 { if ((x >= a[i] && x <= a[i] + g[i]) && (y >= b[i] && y <= b[i] + k[i])) //判断所寻找的点上面有没有毯子覆盖 { ans = i; //如果有毯子,那么直接输出毯子的编号“i” break; //求得毯子的编号以后,直接退出。 } } cout << ans << endl; //输出答案 return 0; }