Minimum increment operations to make the array in increasing order - GeeksforGeeks

23 Apr, 2021
Given an array of size N and X. Find minimum moves required to make the array in increasing order. In each move one can add X to any element in the array.
Examples: 
Input : a = { 1, 3, 3, 2 }, X = 2
Output : 3
Explanation : Modified array is { 1, 3, 5, 6 }

Input : a = { 3, 5, 6 }, X = 5
Output : 0
Observation : 
Let’s take two numbers a and b. a >= b and convert this into a < b by adding some number X. so, a < b + k*X ( a – b ) / x < kso, the minimum possible value of k is ( a – b ) / x + 1.  
Approach :  
Iterate over the given array and take two numbers when a[i] >= a[i-1] 
and apply above observation.
Below is the implementation of the above approach: 
C++
Java
Python3
C#
PHP
Javascript
// C++ program to find minimum moves required// to make the array in increasing order#include <bits/stdc++.h>using namespace std; // function to find minimum moves required// to make the array in increasing orderint MinimumMoves(int a[], int n, int x){    // to store answer    int ans = 0;     // iterate over an array    for (int i = 1; i < n; i++) {         // non- increasing order        if (a[i] <= a[i - 1]) {            int p = (a[i - 1] - a[i]) / x + 1;             // add moves to answer            ans += p;             // increase the element            a[i] += p * x;        }    }     // return required answer    return ans;} // Driver codeint main(){    int arr[] = { 1, 3, 3, 2 };    int x = 2;    int n = sizeof(arr) / sizeof(arr[0]);     cout << MinimumMoves(arr, n, x);     return 0;}
// Java program to find minimum moves required// to make the array in increasing orderimport java.util.*;import java.lang.*;import java.io.*; class GFG{// function to find minimum moves required// to make the array in increasing orderstatic int MinimumMoves(int a[], int n, int x){    // to store answer    int ans = 0;      // iterate over an array    for (int i = 1; i < n; i++) {          // non- increasing order        if (a[i] <= a[i - 1]) {            int p = (a[i - 1] - a[i]) / x + 1;              // add moves to answer            ans += p;              // increase the element            a[i] += p * x;        }    }      // return required answer    return ans;}  // Driver codepublic static void main(String args[]){    int arr[] = { 1, 3, 3, 2 };    int x = 2;    int n = arr.length;      System.out.println(MinimumMoves(arr, n, x));  }}
# Python3 program to find minimum# moves required to make the array# in increasing order # function to find minimum moves required# to make the array in increasing orderdef MinimumMoves(a, n, x) :     # to store answer    ans = 0     # iterate over an array    for i in range(1, n) :         # non- increasing order        if a[i] <= a[i - 1] :             p = (a[i - 1] - a[i]) // x + 1             # add moves to answer            ans += p             # increase the element            a[i] += p * x     # return required answer    return ans         # Driver code    if __name__ == "__main__" :     arr = [1, 3, 3, 2]    x = 2    n = len(arr)     print(MinimumMoves(arr, n, x))  # This code is contributed by ANKITRAI1
// C# program to find minimum moves required// to make the array in increasing orderusing System; class GFG {     // function to find minimum moves required// to make the array in increasing orderstatic int MinimumMoves(int[] a, int n, int x){         // to store answer    int ans = 0;         // iterate over an array    for (int i = 1; i < n; i++) {             // non- increasing order        if (a[i] <= a[i - 1]) {                         int p = (a[i - 1] - a[i]) / x + 1;                 // add moves to answer            ans += p;                 // increase the element            a[i] += p * x;        }    }         // return required answer    return ans;}     // Driver codepublic static void Main(){         int[] arr = {1, 3, 3, 2};    int x = 2;    int n = arr.Length;         Console.Write(MinimumMoves(arr, n, x));     }} // This code is contributed by ChitraNayal
<?php// PHP program to find minimum// moves required to make the// array in increasing order // function to find minimum// moves required to make the// array in increasing orderfunction MinimumMoves(&$a, $n, $x){    // to store answer    $ans = 0;     // iterate over an array    for ($i = 1; $i < $n; $i++)    {         // non- increasing order        if ($a[$i] <= $a[$i - 1])        {            $p = ($a[$i - 1] - $a[$i]) / $x + 1;             // add moves to answer            $ans += $p;             // increase the element            $a[$i] += $p * $x;        }    }     // return required answer    return $ans;} // Driver code$arr = array(1, 3, 3, 2 );$x = 2;$n = sizeof($arr); echo ((int)MinimumMoves($arr, $n, $x)); // This code is contributed// by Shivi_Aggarwal?>
<script> // Javascript program to find minimum// moves required to make the array in// increasing order    // Function to find minimum moves required// to make the array in increasing orderfunction MinimumMoves(a, n, x){         // To store answer    var ans = 0;     // Tterate over an array    for(i = 1; i < n; i++)    {                 // Non- increasing order        if (a[i] <= a[i - 1])        {            var p = parseInt((a[i - 1] -                              a[i]) / x + 1);             // Add moves to answer            ans += p;             // Increase the element            a[i] += p * x;        }    }     // Return required answer    return ans;} // Driver codevar arr = [ 1, 3, 3, 2 ];var x = 2;var n = arr.length; document.write(MinimumMoves(arr, n, x)); // This code is contributed by aashish1995 </script>
3
 
ankthon
Shivi_Aggarwal
tufan_gupta2000
ukasp
aashish1995
Arrays
Competitive Programming
Mathematical
Arrays
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Maximum and minimum of an array using minimum number of comparisons
Top 50 Array Coding Problems for Interviews
Stack Data Structure (Introduction and Program)
Introduction to Arrays
Multidimensional Arrays in Java
Competitive Programming - A Complete Guide
Practice for cracking any coding interview
Arrow operator -> in C/C++ with Examples
Prefix Sum Array - Implementation and Applications in Competitive Programming
Fast I/O for Competitive Programming