Skip to main content

Replace for X codechef October long challenge solution | codechef October long challenge editorial

 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 integers A1,A2,,AN and three more integers X,p, and k.

An operation on the array is defined to be: replace the 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 operations) to make the p-th smallest element of the array equal to X. If it is impossible to do so output 1.

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.

Input

  • The first line of the input contains a single integer T denoting the number of test cases. The description of T test cases follows.
  • The first line of each test case contains four integers N,X,p,k respectively.
  • The second line contains N space-separated integers A1,A2,,AN.

Output

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

Constraints

  • 1T100
  • 1p,kN
  • 0X109
  • The sum of N over all test cases does not exceed 4105
  • 0Ai109 for each valid i

Subtasks

Subtask #1 (10 points): N5

Subtask #2 (40 points): The sum of N over all test cases does not exceed 3103

Subtask #3 (50 points): Original constraints

Example Input

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-th smallest integer of the current array (which is 8 in this case) and replace it with 0. The array then becomes [4,9,7,0,0] which now makes 4 as the 3rd smallest number of the array.

Example case 2:

  • It is impossible to make 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

Popular posts from this blog

codeforces rating system | Codeforces rating Newbie to Legendary Grandmaster

 Codeforces rating system | Codeforces rating Newbie to Legendary Grandmaster- Codeforces is one of the most popular platforms for competitive programmers and  codeforces rating matters a lot  .  Competitive Programming  teaches you to find the easiest solution in the quickest possible way. CP enhances your problem-solving and debugging skills giving you real-time fun. It's brain-sport. As you start solving harder and harder problems in live-contests your analytical and rational thinking intensifies. To have a good codeforces profile makes a good impression on the interviewer. If you have a good  codeforces profile so it is very easy to get a referral for product base company like amazon, google , facebook etc.So in this blog I have explained everything about codeforces rating system. What are different titles on codeforces- based on rating codeforces divide rating into 10 part. Newbie Pupil Specialist Expert Candidate Codemaster Master International Master Grandmaster Internat

Apple Division CSES Problem Set Solution | CSES Problem Set Solution Apple division with code

 Apple Division CSES Problem Set Solution | CSES Problem Set Solution Apple division with code - Apple Division CSES Problem Solution Easy Explanation. Apple division is problem is taken form cses introductory problem set.Let's Read Problem statement first. Problem Statement- Time limit:  1.00 s   Memory limit:  512 MB There are  n n  apples with known weights. Your task is to divide the apples into two groups so that the difference between the weights of the groups is minimal. Input The first input line has an integer  n n : the number of apples. The next line has  n n  integers  p 1 , p 2 , … , p n p 1 , p 2 , … , p n : the weight of each apple. Output Print one integer: the minimum difference between the weights of the groups. Constraints 1 ≤ n ≤ 20 1 ≤ n ≤ 20 1 ≤ p i ≤ 10 9 1 ≤ p i ≤ 10 9 Example Input: 5 3 2 7 4 1 Output: 1 Explanation: Group 1 has weights 2, 3 and 4 (total weight 9), and group 2 has weights 1 and 7 (total weight 8). Join Telegram channel for code discussi

Movie Festival CSES problem set solution

 Movie Festival CSES problem set solution - Problem statement-  Time limit:  1.00 s   Memory limit:  512 MB In a movie festival  n n  movies will be shown. You know the starting and ending time of each movie. What is the maximum number of movies you can watch entirely? Input The first input line has an integer  n n : the number of movies. After this, there are  n n  lines that describe the movies. Each line has two integers  a a  and  b b : the starting and ending times of a movie. Output Print one integer: the maximum number of movies. Constraints 1 ≤ n ≤ 2 ⋅ 10 5 1 ≤ n ≤ 2 ⋅ 10 5 1 ≤ a < b ≤ 10 9 1 ≤ a < b ≤ 10 9 Example Input: 3 3 5 4 9 5 8 Output: 2 Solution - Step -1 take input in a vector as a pair first element is ending time ans second element is starting time Step -2 sort the vector in increasing order because we will watch that movie which is ending first. Step -3 iterate over vector and calculate ans .           follow code below-