提交时间:2025-02-07 15:19:33

运行 ID: 36082

#include<bits/stdc++.h> using namespace std; #define int long long const int N=10010; int n,a[N],txt[N],ans; vector<int>cnt[N]; signed main(){ scanf("%lld",&n); for(int i=1;i<=n;i++)scanf("%lld",&a[i]); for(int i=1;i<=n;i++){ // cout<<"!"<<i<<endl; for(int j=1;j<=n;j++){if(a[j]>a[i])txt[j]=1;else txt[j]=-1;} // for(int i=1;i<=n;i++)cout<<txt[i]<<" ";cout<<endl; int sum=0; for(int j=i-1;j>=1;j--){sum+=txt[j];cnt[sum+n].push_back(j);if(sum==0)ans+=j*i*a[i];} sum=0; // for(int j=0;j<=2*n;j++){cout<<j<<":"<<" ";for(auto k:cnt[j])cout<<k<<" ";cout<<endl;} for(int j=i+1;j<=n;j++){ sum+=txt[j];//cout<<"////"<<sum<<endl; for(auto l:cnt[-sum+n]){ans+=l*j*a[i];} if(sum==0)ans+=j*i*a[i]; } ans+=i*i*a[i]; for(int j=0;j<=10000;j++)cnt[j].clear(); // for(int j=0;j<=2*n;j++){cout<<j<<":"<<" ";for(auto k:cnt[j])cout<<k<<" ";cout<<endl;} } printf("%lld\n",ans); return 0; }