問題
原文(英語)を表示1回の操作で配列の1つの値を1だけ増やすことができます。配列を非減少(各値が直前の値以上)にしてください。値を減らしたり、順序を変更したりすることはできません。
increasing_array(numbers) を実装してください。
入力
numbers: 元の順序の値の配列。
出力
必要な単位インクリメントの合計の最小値を返してください。
制約
1 ≤ 長さ ≤ 200,000。各値は1以上1,000,000,000以下。符号付き64ビットの結果を使用してください。
例
例 1
入力:
numbers = [4, 1, 3]
期待される出力:
expected = 4
入力:
std::vector<long long> numbers = {4, 1, 3};
期待される出力:
long long expected = 4;
入力:
long[] numbers = new long[] {4, 1, 3};
期待される出力:
long expected = 4;
解説
1を4にするのに3回、3を4にするのに1回操作します。結果は [4, 4, 4] となり、合計4回の操作が必要です。
例 2
入力:
numbers = [1, 2, 2, 5]
期待される出力:
expected = 0
入力:
std::vector<long long> numbers = {1, 2, 2, 5};
期待される出力:
long long expected = 0;
入力:
long[] numbers = new long[] {1, 2, 2, 5};
期待される出力:
long expected = 0;
解説
すべての値がすでに直前の値以上です。同じ値が隣り合っていても問題ありません。
参考資料
この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。