铺矩形地毯
既然前一张会被后一张所覆盖 那么不如直接按照反方向的顺序直接找到最后一张地毯
(一年前的代码,缩进比较尴尬)

#include <iostream>
using namespace std;
int a[100000][4];
int main(){
int n;
cin>>n;
for (int i=0;i<n;++i)
{
    cin>>a[i][0];
    cin>>a[i][1];
    cin>>a[i][2];
    cin>>a[i][3];
}
int x,y;
cin>>x;
cin>>y;
int c;
int flag=0;///标记数组 如果找不到被覆盖的,输出-1
for (int k=n-1;k>=0;--k)///从后往前枚举
{
    if ((a[k][0]+a[k][2])>=x&&a[k][0]<=x&&a[k][1]<=y&&(a[k][1]+a[k][3])>=y)
    {c=k+1;flag=1;break;}
}
if (flag==0) 
   cout<<-1<<endl;
else
   cout<<c<<endl;
    return 0;

}