I have a problem here: -->“How do we find num(points left of B and below G)? The answer lies in the line L1. When our sweep-line was at L1, we have: Total number of points seen so far = points either left of B or below G.”<-- I think if L1 sweep means all the points below this line in the diagram then it is “not” equal to the “points on the left of B or below G” because there can be some point b/w L2 and L1 and on the left of B which are not covered by L1 sweep. same for b/w L2 and L1 and below G. please clarify. Please also clarify the definition of line-sweep.

got it. For this part of problem (refer above comment), it is a completely new BIT which is calculated from points and queries sorted by their x coordinate. see Setter’s solution for clarification.

very nice editorial

Could somebody explain me the update and read functions in the tester’s solution?

I couldn’t get this line

void update(int idx,int val,int x)

{

while (idx <= maxn) tree[x][idx]=(tree[x][idx]+val),idx += (idx & -idx);

}

What is the meaning of **idx&-idx**?

Could somebody help me with the editorial?

Somebody explain me the update and read functions in the tester’s solution?

I couldn’t get this line

void update(int idx,int val,int x)

{ while (idx <= maxn) tree[x][idx]=(tree[x][idx]+val),idx += (idx & -idx); }

What is the meaning of **idx&-idx**?

its idx&-idx the bitwise AND operation between idx and its negation

Excellent editorial and tester’s solution.