分析:

需要使用二维数组存储地毯的编号,后面的地毯编号覆盖前面的。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[11000][11000]={0};
int main(){
    int x,y,n,d1,d2;
    scanf("%d",&n);
    for(int k=1;k<=n;k++)    {
        scanf("%d%d%d%d",&x,&y,&d1,&d2);
        for(int i=x;i<=x+d1;i++)
            for(int j=y;j<=y+d2;j++)
                a[i][j]=k;
    }
    scanf("%d%d",&x,&y);
    if (a[x][y]==0)printf("-1");
    else printf("%d\n",a[x][y]);            
    return 0;
}
View Code