## Replace for X codechef October long challenge solution -

This Problem is taken from CodeChef October long challenge.

## Problem Statement-

You are given an array of N$N$ integers A1,A2,…,AN${A}_{1},{A}_{2},\dots ,{A}_{N}$ and three more integers X,p,$X,p,$ and k$k$.

An operation on the array is defined to be: replace the k$k$-th smallest integer in the array with any integer you want.

Output the minimum number of operations you must perform on the array (possibly 0$0$ operations) to make the p$p$-th smallest element of the array equal to X$X$. If it is impossible to do so output −1$-1$.

Note: the k$k$-th smallest number in an array is the k$k$-th number from the left when the array is sorted in non-decreasing order.

- The first line of the input contains a single integer T$T$ denoting the number of test cases. The description of T$T$ test cases follows.
- The first line of each test case contains four integers N,X,p,k$N,X,p,k$ respectively.
- The second line contains N$N$ space-separated integers A1,A2,…,AN${A}_{1},{A}_{2},\dots ,{A}_{N}$.

### Output

For each test case, print a single line containing one integer ― the minimum number of operations you must perform to make X$X$ the p$p$-th smallest element or −1$-1$ if its impossible to do so.

### Constraints

- 1≤T≤100$1\le T\le 100$
- 1≤p,k≤N$1\le p,k\le N$
- 0≤X≤109$0\le X\le {10}^{9}$
- The sum of N$N$ over all test cases does not exceed 4∗105$4\ast {10}^{5}$
- 0≤Ai≤109$0\le {A}_{i}\le {10}^{9}$ for each valid i$i$

### Subtasks

Subtask #1 (10 points): N≤5$N\le 5$

Subtask #2 (40 points): The sum of N$N$ over all test cases does not exceed 3∗103$3\ast {10}^{3}$

Subtask #3 (50 points): Original constraints

```
2
5 4 3 4
4 9 7 0 8
2 25 1 2
100 20
```

### Example Output

```
1
-1
```

### Explanation

Example case 1:

- We can perform one operation in the array. Take the k$k$-th smallest integer of the current array (which is 8$8$ in this case) and replace it with 0$0$. The array then becomes [4,9,7,0,0]$[4,9,7,0,0]$ which now makes 4$4$ as the 3rd smallest number of the array.

Example case 2:

- It is impossible to make 25$25$ as the smallest number of the array.

### Solution-

SOlution-

Since a note is mentioned in question that

Note: the k-th smallest number in an array is the k-th number from the left when the array is sorted in non-decreasing order.

So first of all we will sort our array/vector in non-decreasing order so that we can find kth smalles number.

then p=p-1;

k=k-1;

because index is starting from 0 in my code so i did previous step.

I have written a solution function which return minumum number of operation reequired.

Now Let's jump into logic.

1-first of all i will check is(v[p]==X) if it is true i will simply return 0 because in this case i already have my answer.

2-now i will maintain a count variable which count total operation required.

3-Main logic start from here since out array is sorted till now so we have three choices from here if(k>p),if(k<p) and if(k==p) and

in every 3 case these 3 case also contain two-two cases if(v[p]<x) and if(v[p]>x).

4- if(k>p) and if(v[p]<x) in this case we never reach to final solution so i will return -1 in this case.

if (k>p) && v[p]> x in this case i can reach to my solution and i will try to add some smaller value at k so that i can shift

value at p toward k ans every time i increase my value by one.

5- same if (k<p) this case is totally opposite of case 4.

6- if (k==p)

in this case i can reach to my solution

if(v[p]>x) i have to shift pth value to left

and if(v[p]<x) i will shift pth value to right

and count ans.

finllay i return ans which tells minimum way to get final solution.

code of this problem

## Comments

## Post a Comment