#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 10; int n; int a[N]; int dif; int main() { cin >> n; int ans1 = 0, ans2 = 0; // 操作[l,r],若+1即b[l]+1,b[r+1]-1,若-1即b[l]-1,b[r+1]+1 // 即差分后,每一次操作只影响l和r+1(只影响两个数) // 所以每一次操作,会是一个正数和一个负数相互抵消 // 即此题变为:有一个数组,每次使一个数-1,一个数+1。如果最后所有数都为0,求最少操作次数 // 所以求差分后:max(正数总和,负数总和)即可 cin >> a[0]; for (int i = 1; i < n; i++) { cin >> a[i]; dif = a[i] - a[i - 1]; // 差分,若=0,则工资相等 if (dif > 0) ans1 += dif; else ans2 += dif; } cout << max(ans1, -ans2); return 0; }