[Help needed] How many integers in a sub array which are less than a given value?
Difference between en2 and en3, changed 355 character(s)
Problem:↵
------------------↵
Given an array of n integers and q queries of the form: Q(L, R, x). ↵
For each query Q(L, R, x), you have to say "How many integers in the range L to R(inclusive) which are less than x".↵

**There is no update operation.**↵

### Constraints:↵

- $1\leq  n \leq 1900000$ ↵
- $1\leq  q \leq 10^5$ ↵

If I use Square Root Decomposition, complexity will be $O(q * sqrt(n) * log n )$, which is not so good for this constraints, I think### I know two ways:↵

1.  **Using SQRT decompostion:**↵
Partition the array in SQRT(n) blocks and Sort each block. Then for each query binary search(lower bound or upper bound) x in each block.↵
If I use Square Root Decomposition, complexity will be $O(q * sqrt(n) * log n )$, which is not so good for this constraints, I think.↵

2. **Using segment tree:**↵
Store the sorted list of numbers in each node in the segment tree. Then for each query, binary search x at each required node
.↵

Can you please suggest any better solution for this problem ?↵

Thanks in advance.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en3 English shahidul_brur 2017-06-08 20:14:26 355
en2 English shahidul_brur 2017-06-08 14:59:49 60
en1 English shahidul_brur 2017-06-08 14:57:38 573 Initial revision (published)