题目描述
给出一个数列a,每次可以选择一个区间使得区间内每个数+1,现在要在若干次操作后,使得数列a中存在一个位置,a前是单调上升序列,a后是单调下降序列,求最小的操作数
样例输入
5
3 2 2 3 1
样例输出
3
思路
差分,然后用前缀和存储单调上升的代价,后缀和存储单调下降的代价
然后每个位置取最大值,然后再取最小值即可
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
ll n, ans = 1e18;