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.

**Input:**

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

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

**Constraints:**

1 <= T <= 100

1 <= N <= 10^{5}

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

**User Task: **

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

**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

BadiMehnatLagtiHaiEasySawalMe | 480 |

Jihye Sofia Seo | 187 |

RohitBattu | 176 |

MaaChudaApniBadiMehnatLagtiHaiEasySawal | 173 |

piyushmittal25 | 172 |

AdityaSharma16 | 490 |

BadiMehnatLagtiHaiEasySawalMe | 480 |

saumitra13325 | 452 |

blackshadows | 430 |

ashujack | 401 |

blackshadows | 5188 |

akhayrutdinov | 5099 |

Ibrahim Nash | 5071 |

Quandray | 4354 |

sanjay05 | 3668 |

Login to report an issue on this page.