题意
给出n个地毯(1~n)的大小及其左下角坐标,并且按地毯编号放置这n个地毯,求(x,y)点最上层地毯序号。(没有地毯则输出-1)
题解
要求最上层地毯,很容易想到按地毯放置顺序逆序遍历每个地毯是否为目标地毯,如果最终没有结果则输出-1。
代码
void solve()
{
int n;
cin >> n;
vector<int> a(n), b(n), c(n), d(n);
for(int i = 0; i < n; i++){
cin >> a[i] >> b[i] >> c[i] >> d[i];
}
int x, y;
cin >> x >> y;
for(int i = n - 1; i >= 0; i--){
if(x >= a[i] && x <= a[i] + c[i] && y >= b[i] && y <= b[i] + d[i]) return cout << i + 1, void();
}
cout << -1;
}