题目链接:

最佳思路:
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int a[n],b[n],x[n],y[n];
for(int i = 0;i< n;i++)
{
cin >>a[i]>>b[i]>>x[i]>>y[i];
}
for(int i = n - 1;i >= 0;i--)
{
int dx,dy;
cin >> dx>>dy;
if(a[i] <= dx && dx <= a[i] + x[i] &&dy >= b[i] && dy <= b[i] + y[i])
{
cout << i + 1;
return 0;
}
}
cout << -1;
return 0;
}
a b x y这四个数组存放每一张毯子的信息
之后再倒着往回找,找到的第一个就是结果
cpp
if(a[i] <= dx && dx <= a[i] + x[i] &&dy >= b[i] && dy <= b[i] + y[i])
这就代表这个点落在了这张毯子上;
如果没找到就是-1;
还要注意下标的偏移 进行修正+1即可