这种题的做法应该五花八门,属于比较基础的算法题,我这个是递推的方法,两个数组来记录某一元素两边的最大值,然后由此来计算
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define mk make_pair
#define sz(x) ((int) (x).size())
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;
const int N = 1e4 + 5;
int a[N];
int l[N], r[N];
int main() {
int n;
cin >> n;
int sum = 0;
for (int i = 0; i < n; i++) {
cin >> a[i];
sum += a[i];
}
for (int i = 1; i < n; i++) l[i] = max(l[i - 1], a[i - 1]);
for (int i = n - 2; i >= 0; i--) r[i] = max(r[i + 1], a[i + 1]);
for (int i = 0; i < n; i++) {
if (a[i] < min(l[i], r[i])) sum -= min(l[i], r[i]);
else sum -= a[i];
}
cout << -1 * sum;
return 0;
}