提交时间:2022-10-15 11:34:41
运行 ID: 60434
#include<bits/stdc++.h> using namespace std; long long n; map<int,int> mp; unsigned long long ans; int cnt; long long c; int mod=1000000007; int a[500005]; long long flag[500005]; int flg[500005]; int main() { ios::sync_with_stdio(false); cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; mp[a[i]]=cnt++;ans+=a[i]*(i*(n-i+1)); } for(int i=1;i<=n;i++) { int k=mp[a[i]]; if(flag[k]) { c=flag[k]; ans-=a[i]*c*(n-i+1); flag[k]+=i-flg[k]; flg[k]=i; } else { flag[k]+=i-flg[k]; flg[k]=i; } } ans%=mod; cout<<ans<<endl; return 0; }