Its beautiful how a simple data structure, especially Segment Tree, can be used to solve such a variety of problems.

Can you count the number of subarrays that lie in range [l,r] having maximal element in range [L,R]?

The problem was solved using 2 segment trees built on binary arrays i.e all elements are 0 or 1 and were used to query the number of subarrays in range [l,r] consisting of only 1s.

Check out the video to learn:

CSUBQ Tutorial - NOV17 Long Challenge

Here is yet another application of Segment Trees in solving another medium-hard problem from Codechef NOV17 Long Challenge.

Keep sharing, keep loving.

17 Likes

Your video editorial are just amazing i tried this problem for 3 days but didnt able to get the trick for 100. But finally after this video get it completely. Thanks for this video editorial.

One other possible approach using segment tree could to maintain 5 values in every node. Invalid (greater than R) value from right, Invalid (less than L) from right, Invalid (greater than R) value from left, Invalid (less than L) from left and answer for node. Merging can be done by taking union of all valid subarrays while merging. Link

3 Likes

I solved it using just one segment tree.here

A very nice and clear explanation sir.

Just awesome