#include<iostream> using namespace std;const int N=1e6+5;long long n,a[N],maxl[N],maxr[N],minl[N],minr[N],ans,pos;int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}maxl[1]=maxr[n]=minl[1]=minr[n]=1;for(int i=2;i<=n;i++){if(a[i]>a[i-1]){pos=i-1;while(pos>=1&&a[i]>a[pos]){pos-=maxl[pos];}maxl[i]=i-pos;}else{maxl[i]=1;}if(a[i]<a[i-1]){pos=i-1;while(pos>=1&&a[i]<a[pos]){pos-=minl[pos];}minl[i]=i-pos;}else{minl[i]=1;}}for(int i=n-1;i>=1;i--){if(a[i]>=a[i+1]){pos=i+1;while(pos<=n&&a[i]>=a[pos]){pos+=maxr[pos];}maxr[i]=pos-i;}else{maxr[i]=1;}if(a[i]<=a[i+1]){pos=i+1;while(pos<=n&&a[i]<=a[pos]){pos+=minr[pos];}minr[i]=pos-i;}else{minr[i]=1;}}for(int i=1;i<=n;i++){ans=ans+(maxl[i]*maxr[i]-minl[i]*minr[i])*a[i];}cout<<ans;return 0;}
Note.ms
/114514