在雨巨的课上听到的 思维有了之后用不到算法。

我只考虑最后一次覆盖在上面的是什么。对于坐标面上的一个点,只要它在某一个地毯的大小范围内,就更新这个点的对应地毯值。

可以通过一个for循环 便利所有地毯来实现。当这个点在某个地毯的大小范围内时,就更新color值。

using namespace std;
int a[10010],b[10010],c[10010],d[10010];
int main() 
{
    int n;
    scanf("%d",&n);
    for(int i = 1; i <= n; i++) 
    {
        scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
    } //给每一张地毯初始化
    int color = -1;
    int x,y;
    scanf("%d%d",&x,&y);
    for(int i = 1; i <= n; i++) 
    {
        if(a[i] <= x && b[i] <= y && x <= (a[i] + c[i]) && y <= (b[i] + d[i]))
            color = i;
    }
    cout<<color;
}