先不考虑增加的花费。从小到大增加每个数,求出每个数至少需要增加多少
这显然是一组合法的修改方案,如果只考虑修改结果,那么这显然也是花费最少的结果序列
所以我们只需要重新安排每个数的修改结果。假设原序列中的数 \(x_1,x_2\) 分别修改成了结果序列中的 \(y_1,y_2\),其中 \(x_1<x_2<y_1<y_2\),那么调换 \(y_1\) 和 \(y_2\) 显然是不劣的,因为增加的总和不变差增大了
从大到小枚举每个数,每个数选择大于等于它的最小的数,最后排一遍序,较大的花费应用较少的增加次数即可