//思路:通过四个数组将毯子的情况记录。然后用逆序的方法来找到最上面的一层毯子

上代码:

#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;
}