if语句看过了不理解

刷题时看某博主题解发现了不理解的地方 已经把他代码写到本地了。

#include
using namespace std;
int main()
{
    int n,a[10001],b[10001],g[10001],k[10001],x,y;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i]>>b[i];
        cin>>g[i]>>k[i];
    }    
    cin>>x>>y;
    for(int i=n;i>=1;i--)
    {
        if((x>=a[i]&&x<=a[i]+g[i])&&(y>=b[i]&&y<=b[i]+k[i]))
        {
           cout<

不理解的地方在于15行,这行if语句是确定x与y范围是吧,为什么要这么判定,好迷。
本地测试全对了,而且其他博主也是这么写的,这篇相对最清楚了。
本题链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1118
希望得到回复吧。

这挺好理解的呀,只要你知道算术运算比逻辑运算优先

x>=a[i]&&x<=a[i]+g[i] //a[i]表示左下角x坐标,a[i]+g[i]表示地毯矩形长度
y>=b[i]&&y<=b[i]+k[i] //宽度

所有点的集合形成一个矩形,该表达式就是表示(x,y)是否在给定的矩形坐标范围内,也就是地毯坐标
n是从最大开始遍历,也就是最上方一张地毯坐标