Update appNew update is available. Click here to update.

Sort Integers by Factor Value

Last Updated: 26 Mar, 2021
Difficulty: Moderate


Try Problem

You have been given an array/list ‘ARR’ of integers consisting of ‘N’ integers. The factor value is the number of following operations it takes for the number to become 1.

The two operations are as follows:-

If ‘x’ is even then ‘x’ will become ‘x / 2’.

If ‘x’ is odd then ‘x’ will become ‘x * 3 + 1’.

Your need to sort them in increasing order of factor value i.e. if two integers have the same factor value then sort in increasing order of their value. Your task is to return the ‘K-th’ value in the list after sorting.

Let’s say you have an array/list [1, 3, 4, 5] and ‘K’=2. The factor values are [0, 7, 2, 5] respectively. Finally, our array will look like [1, 4, 5, 3]. Since ‘K’ is 2 return 4.
Input Format:
The first line contains a single integer ‘T’ representing the number of test cases.

The first line of each test case contains two space-separated integers ‘N’ and ‘K’ representing the size of the array/list ‘ARR’ and position whose value in the sorted list you need to return.

The second line and the last line of input contain ‘N’ single space-separated integers representing the array/list elements.
Output Format:
For each test case, print a single line containing a single integer denoting the ‘K-th’ element in sorted list. 

The output of each test case will be printed in a separate line.
You do not need to print anything; it has already been taken care of. Just implement the function.
1 <= T <= 10
1 <= N <= 1000
1 <= K <= N
1 <= ‘ARR[i]’ <= 10 ^ 4

Where ‘ARR[i]’ is an element of array/list ARR.  

Time Limit: 1sec