Given an array A and a range [a, b]. The task is to complete the function threeWayPartition which partition the array around the range such that array is divided in three parts.
1) All elements smaller than a come first.
2) All elements in range a to b come next.
3) All elements greater than b appear in the end.
The individual elements of three sets can appear in any order. You are required to return the modified arranged array.
The first line of input contains an integer T denoting the number of test cases. Then T test cases follow. Each test case contains an integer N denoting the size of the array. Then in the next line are N space separated values of the array (A).
For each test case the output will be 1 if the array is properly arranged else it would be 0.
1 <= T <= 100
1 <= N <= 105
1 <= A[i] <= 106
The task is to complete the function threeWayPartition() which should segregate the elements as required.
1 2 3 3 4
1 2 3
Testcase 2: First, array has elements less than or equal to 1. Then, elements between 1 and 3. And, finally elements greater than 3. So, output is 1.