差分:把一个序列的一个区间加上或减去一个数
zhi识点
1.$\color{red}{min(a, b) + abs(a - b) = max(a, b)}$
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n, a[1000100];
ll pos, neg;
int main()
{
cin >> n;
for(int i = 1; i <= n; ++ i)
{
cin >> a[i];
}
for(int i = n; i > 1; --i) a[i] -= a[i - 1];
for(int i = 2; i <= n ;++ i)
{
if(a[i] > 0) pos += a[i];
else neg -= a[i];
}
cout << min(pos, neg) + abs(pos - neg) << endl << abs(pos - neg) + 1 << endl;
}