You are given a sorted array 'A' of length 'N', two integers 'K' and 'X'. Your task is to print 'K' integers closest to 'X', if two integers are at the same distance return the smaller one.
The output should also be in sorted order
Note:
An integer 'a' is closer to 'X' than an integer 'b' if:
|a - X| < |b - X| or ( |a - X| == |b - X| and a < b )
For Example:
if X = 4, 3 is closer to 'X' than 9, as |3-4| < |9-4| i.e., 1 < 5 and if X = 4, 2 and 6 are equally close to it, as |2-4| == |6-4| = 2, but we say 2 is closer to 4 than 6, as 2 is smaller.
Input Format:
The first line of the input contains ‘T’ denoting the number of test cases.
The first line of each test case contains the three integers 'N', 'K', and 'X'.
The second line of each test case contains 'N' space-separated integers of the array 'A'.
Output Format:
Return the k space-separated integers.
The output of each test case is printed on a new line.
Constraints:
1 <= T <= 5
1 <= N, K <= 5000
1 <= A[i], X <=10^6
Time Limit: 1 second
I proposed the following solution -
Perform a binary search on distance. In each iteration of the binary search, check how many pairs have a distance less than mid and then update low and high bounds ...read more
Explanation:
- The key idea is to sort the array using comparator where elements are compared based on the condition: |a - X| < |b - X| or ( |a - X| == |b - X| and a < b ...read more
The key idea is that we know that the final answer will be some contiguous sequence in array ‘A’. So we initially take the complete array as our answer then reduce its range.
Algorithm:
- I...read more
Hope this C++ code will help you :)
#define pair pair
vector
int left=0;
int right=a.size()-1;
while(left int mid = left + (right - left) / 2; if (A[mid] == X) { left = mid; break; } else if (A[mi...read more
Top Trilogy Innovations Software Developer Intern interview questions & answers
Popular interview questions of Software Developer Intern
Reviews
Interviews
Salaries
Users/Month