思路

感觉是入门题,没用到算法。
我们从下往上叠地毯,那么我们从上往下数第一个覆盖这个坐标的地毯的编号就是答案了。
如果没有找到就输出-1;

代码

#include<bits/stdc++.h>
using namespace std;

struct X{
    int a,b,g,k;
}mt[10005];

int main(){
    int n,i,ans=-1,x,y;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        scanf("%d%d%d%d",&mt[i].a,&mt[i].b,&mt[i].g,&mt[i].k);
    }
    scanf("%d%d",&x,&y);
    for(i=n;i>=1;i--){
        if(mt[i].a<=x&&x<=mt[i].a+mt[i].g&&mt[i].b<=y&&y<=mt[i].b+mt[i].k){
            ans=i;
            break;
        }
    }
    cout<<ans;
    return 0;
}