Question
Solution
后缀和优化到
求一个后缀和优化一下,按公式做就好了。
Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const double eps = 1e-8;
const int NINF = 0xc0c0c0c0;
const int INF = 0x3f3f3f3f;
const ll mod = 1e9 + 7;
const ll maxn = 1e6 + 5;
const int N = 5e5 + 5;
ll n,a[N],b[N],suf[N];
int main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld",a+i);
}
sort(a+1,a+1+n);
ll ans=0;
for(int i=n;i>=1;i--){
suf[i]=(suf[i+1]+a[i])%mod;
b[i]=(n-1)*a[i]%mod*a[i]%mod;
ans=(ans+b[i])%mod;
}
for(int i=2;i<=n;i++){
ans=(ans-2*a[i-1]%mod*suf[i]%mod+2*mod)%mod;
}
printf("%lld\n",ans);
return 0;
}
京公网安备 11010502036488号