![]() |
VOOZH | about |
Given 3 integers N, K, and X, the task is to construct an array arr[] with the below conditions:
Among all the array that follows the above condition print the one having the maximum sum of its elements or print -1 if no such array exists.
Constraints:
Examples:
Input: N=5, K=3, X=3
Output: [0, 1, 2, 2, 2]
Explanation: The MEX of the above array is 3, and sum of its element is 7, it is guaranteed that we cannot create an array having sum greater than 7Input: N=4, K=7, X=5
Output: -1
Explanation: No valid array exists
Approach: The problem can be solved using the following approach:
Case 1: If min(N, X+1) < K, then answer does not exists i.e. answer = -1.
Reason:
- If N < K, then the maximum value of MEX that can be created using N numbers is equal to N. For example, if N=4, then arr[] = [0, 1, 2, 3] gives MEX = 4. Therefore, if N<K we cannot achieve MEX = K
- If X+1 < K, then also it would be impossible to achieve MEX = K due to the fact that for MEX = K, K - 1 should be present in the array, but X is the maximum number present in the array.
Case 2: If answer exists, and we want to maximize it.
Since we have to form MEX=K therefore it is necessary for all the elements from 0 to K-1 to appear at least once in the array. Now since our task is to maximize the sum, all the elements form 0 to K-1 should occur exactly once all the remaining elements will depend upon the value of X i.e.
- If X = K, then all the remaining values should be K-1 so that MEX = K is preserved
- If X ≠ K, then all the remaining values should be X.
Steps to solve the problem:
Below is the implementation of the above approach:
0 1 2 2 2
Time Complexity: O(N)
Auxiliary Space: O(N), where N is the size of array.