利用差分数组b[]对原数组a[]进行存储,然后保证最终差分数组的b[2]~b[n]都为0即可。
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
typedef long long LL;
int a[N],b[N],num,n;
LL p,q;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=a[i]-a[i-1];
}
for(int i=2;i<=n;i++) //b[2]=a[2]-a[1],b[n]=a[n]-a[n-1]当其为0时,原数组a[]所有元素相等
{
if(b[i]>0) p+=b[i];
else q-=b[i];
}
cout<<max(p,q)<<endl;
cout<<abs(p-q)+1;
return 0;
}