我所用解法的核心:判断(x,y)是否在毯子的范围内,如果在,则更新color(即所指定点所覆盖的毯子编号),如果不在,则不用管

#include <iostream>
using namespace std;

int a[10100], b[10100], g[10100], k[10100]; //记录每个毯子的左下角坐标及长和宽
int n; //毯子的数量
int x, y; //被覆盖点的坐标

int main(void)
{
    cin >> n;
    int color = 0; //记录被覆盖点现在铺着哪块毯子

    //输入a,b,j,k
    for(int i = 1; i <= n; i++)
        cin >> a[i] >> b[i] >> g[i] >> k[i];

    cin >> x >> y;

    //遍历每个毯子
    for(int i = n; i >= 1; i--)
    {
        //如果x、y在毯子覆盖的范围内,则更新覆盖点的毯子编号
        if(x >= a[i] && x <= a[i]+g[i] && y >= b[i] && y <= b[i]+k[i])
        {
            color = i;
            break;
        }
    }
    cout << color << endl;

    return 0;
}