CF205B Little Elephant and Sorting

题目描述

小象喜欢排序。 他有一个包含 $n$ 个整数的数组 $a$。我们将数组元素从 $1$ 到 $n$ 编号,第 $i$ 个元素记为 $a_i$。小象可以进行一次操作,选择任意一对整数 $l$ 和 $r$,满足 $1 \leq l \leq r \leq n$,然后将所有满足 $l \leq i \leq r$ 的 $a_i$ 增加 $1$。 请帮助小象计算,最少需要多少次操作才能把数组 $a$ 变成任意一个非递减序列。一个包含 $n$ 个元素的数组按非递减顺序排列,意思是对于任意的 $i$ $(1 \leq i < n)$,都有 $a_i \leq a_{i+1}$。

输入格式

第一行包含一个整数 $n$ $(1 \leq n \leq 10^{5})$,表示数组 $a$ 的大小。 第二行包含 $n$ 个整数,用空格隔开,表示数组 $a$($1 \leq a_i \leq 10^9$)。这些元素按照索引递增的顺序排列在一行上。

输出格式

输出一个整数,表示最少需要的操作次数。 请不要在 C++ 中使用 %lld 格式读写 64 位整数。建议使用 cin、cout 流或 %I64d 格式。

说明/提示

在第一个样例中,数组已经是非递减的,所以答案是 $0$。 在第二个样例中,需要进行两次操作:先将第 $2$ 个到第 $3$ 个元素同时加 $1$(此后数组变为 $[3, 3, 2]$),再单独将最后一个元素加 $1$(此后数组变为 $[3, 3, 3]$)。 在第三个样例中,至少需要 $6$ 步。可能的操作顺序为:(2, 3)、(2, 3)、(2, 3)、(3, 3)、(3, 3)、(3, 3)。经过这些操作后,数组变为 $[7, 7, 7, 47]$。 由 ChatGPT 5 翻译