C# Array Change
static long ArrayChange(int[] a)
{
    var arr = new long[a.Length];
    Array.Copy(a, arr, a.Length);
    long min = 0;

    for (int k = 0; k < arr.Length - 1; k++)
    {
        if (arr[k] >= arr[k + 1])
        {
            var dif = arr[k] - arr[k + 1] + 1;
            arr[k + 1] += dif;
            min += dif;
        }
    }

    return min;
}

This moves left to right and bumps values only when needed so the array becomes strictly increasing.