首先想到用二维数组,但是内存太大会爆;因为题目说的是最上面的那块地毯,所以暗示我们应该用for循环倒着推,又给了我们每个地毯的大小和位置,那我们直接从后看这块地毯包不包含(x,y)就好了,包含的话,又是倒着推的,那它肯定是最上面那一层了,直接输出。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int s,ss,n,x[20005],y[20005],i,j,g[20000],k[20000];
cin>>n;
for(i=1;i<=n;i++)
{
cin>>x[i]>>y[i]>>g[i]>>k[i];
}
cin>>s>>ss;
for(i=n;i>=1;i--)
{
if(s>=x[i]&&s<=x[i]+g[i]&&ss>=y[i]&&ss<=y[i]+k[i])
{
cout<<i;
return 0;
}
}
cout<<-1;
}