Erlang Array Change
-module(array_change).
-export([array_change/1]).

array_change([H | T]) ->
    {_, Total} = lists:foldl(fun(X, {Prev, Acc}) ->
        case X =< Prev of
            true ->
                New = Prev + 1,
                {New, Acc + (New - X)};
            false ->
                {X, Acc}
        end
    end, {H, 0}, T),
    Total.

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