Given an array **A[]** and a range [**a**, **b**]. The task is to 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.

**Input Format:**

The first line of input contains an integer **T** denoting the number of test cases. Then T test cases follow. First line of 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[]).

**Output Format:**

For each test case the output will be **1** if the array is properly arranged else it would be **0**.

**User Task: **

The task is to complete the function **threeWayPartition()** which should segregate the elements as required. The function returns an array.

**Constraints:**

1 <= T <= 100

1 <= N <= 10^{5}

1 <= A[i] <= 10^{6}

**Example:**

**Input:**

2

5

1 2 3 3 4

1 2

3

1 2 3

1 3

**Output:**

1

1

**Explanation:
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.

Author: Shubham Joshi 1

If you have purchased any course from GeeksforGeeks then please ask your doubt on course discussion forum. You will get quick replies from GFG Moderators there.

hari32147 | 206 |

preparecodinginterview_dot_com | 190 |

JonSnow_IKnowNothing | 168 |

shivamsingh00236 | 130 |

AdityaRaj9 | 121 |

abducodes | 906 |

harshtyagi36 | 447 |

arpit_anshuman | 347 |

vaibhavarya16221 | 333 |

vamsikrishna55 | 323 |

blackshadows | 5331 |

Ibrahim Nash | 5219 |

akhayrutdinov | 5111 |

mb1973 | 4929 |

Quandray | 4567 |

Login to report an issue on this page.