记录每个地毯情况,然后因为只问一点情况,所以从后循环查找
注意该题目:如果模拟整个客厅——(1e5)2直接爆掉,但只有一次询问,地毯1e4,所以遍历每个地毯看是否符合
输入每个地毯的情况
输入要查找的点x,y
for (i:从后往前遍历){
    if (x和y都在i地毯区域)输出i;break;
    if (i==1,最后一块地毯都没break)输出-1; 
}
代码
#include <bits/stdc++.h>

using namespace std;

const int N=10005;
int n,x,y;
int a[N],b[N],g[N],k[N];

int main(int argc, char** argv) {
	cin>>n;
	for(int i=1;i<=n;i++){
		scanf("%d%d%d%d",&a[i],&b[i],&g[i],&k[i]);
	}
	cin>>x>>y;
	for(int i=n;i>=1;i--){
		if(a[i]<=x&&a[i]+g[i]>=x&&b[i]<=y&&b[i]+k[i]>=y){
			cout<<i<<endl;break;
		}
		if(i==1) cout<<-1<<endl;
	}
	return 0;
}


一开始想把整个客厅模拟,直接爆存储
for (i:1~n){
    输入地毯情况
    for (j:地毯x坐标)
        for (l:地毯y坐标)
            修改地毯对应客厅的值ground[j][l](此处有(1e5)^2时间复杂度直接爆掉)
}
输入查询点x,y
输出x,y处客厅对应情况