枚举
根据题目可以得到矩形四个点的坐标(其实只要对角线的两个点就够了)
从最后一张地毯开始(选择从后往前作为枚举方向),判断点是否在该地毯上
如果在则break,输出当前地毯编号;否则输出-1。
#include <bits/stdc++.h>
using namespace std;
#define N 10010
int main(){
int a[N],b[N],g[N],k[N],n,x,y;
bool flag = 0;
cin>>n;
for(int i = 1;i <= n;i++){
//cin>>a[i]>>b[i]>>g[i]>>k[i];
scanf("%d%d%d%d",&a[i],&b[i],&g[i],&k[i]);
}
cin>>x>>y;
for(int j=n;j >= 1;j--){ //从末尾开始枚举
if(a[j] <= x && a[j]+g[j] >= x && b[j] <= y && b[j]+k[j] >= y){
cout<<j;
flag = 1;
break;
} //判断点是否在矩形内
}
if(flag==0) cout<<-1;
return 0;
}