# Minimize sum of numbers required to convert an array into a permutation of first N natural numbers

Minimize sum of numbers required to convert an array into a permutation of first N natural numbersGiven an array A[] of size N, the task is to find the minimum sum of numbers required to be added to array elements to convert the array into a permutation of 1 to N. If the array can not be converted to desired permutation, print -1.Examples:Input: A[] = {1, 1, 1, 1, 1}Output: 10Explanation: Increment A[1] by 1, A[2] by 2, A[3] by 3, A[4] by 4, thus A[] becomes {1, 2, 3, 4, 5}.Minimum additions required = 1 + 2 + 3 + 4 = 10Input: A[] = {2, 2, 3}Output: -1Approach: The idea is to use sorting. Follow these steps to solve this problem:Below is the implementation of the above approach:C++#include using namespace std;int minimumAdditions(int a[], int n){ sort(a, a + n); int ans = 0; for (int i = 0; i < n; i++) { if ((i + 1) - a[i] < 0) { return -1; } if ((i + 1) - a[i] > 0) { ans += (i + 1 – a[i]); } } return ans;}int main(){ int A[] = { 1, 1, 1, 1, 1 }; int n = sizeof(A) / sizeof(A[0]); cout 0): ans += (i + 1 – a[i]) return ansif __name__ == ‘__main__’: A = [ 1, 1, 1, 1, 1 ] n = len(A) print(minimumAdditions(A, n))Output: 10Time Complexity: O(N* log(N))Auxiliary Space: O(1)Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.In case you wish to attend live classes with industry experts, please refer Geeks Classes Live