下面我们来学习一下代码:
#include <bits/stdc++.h>
using namespace std;
int n, x, y, lx, ly;//n表示地毯的数量,x表示那个点的横坐标,y表示那个点的纵坐标
struct node
{
int zxx, zxy, rsx, rsy;//左下角坐标和右上角坐标
}stu[1000001];
int main()
{
scanf("%d", &n);
for(register int i = 1; i <= n; ++i)
{
scanf("%d %d %d %d", &stu[i].zxx, &stu[i].zxy, &lx, &ly);//输入左下角坐标和x方向长度,和y方向的长度
stu[i].rsx = stu[i].zxx + lx;//左下角x坐标 + x方向长度 = 右上角x坐标
stu[i].rsy = stu[i].zxy + ly;//左下角y坐标 + y方向长度 = 右上角y坐标
}
scanf("%d %d", &x, &y);//输入点的坐标
for(register int i = n; i >= 1; --i)//倒序查找(找最上面的)
{
if(stu[i].rsx >= x && stu[i].rsy >= y && stu[i].zxx <= x && stu[i].zxy <= y)//右上角坐标比x,y都大,左下角坐标比x,y都小就满足条件(如图)
{
printf("%d", i);
return 0;//直接退出
}
}
printf("-1");//没有就输出-1
return 0;
}
这就是今天的全部内容了,谢谢观看!