JYM 的公司

hicc0305

2019-02-24 15:38:38

Personal

## 题目大意 给出n(n<=500000)个数,求所有数对两个数的差值总和 ### 解法 把n个数排序,然后瞎搞 ``` #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define int long long using namespace std; int n,sum=0,res=0; int a[500100]; signed main() { scanf("%lld",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); sort(a+1,a+n+1); for(int i=1;i<=n;i++) res+=a[i]-a[1]; sum=res; for(int i=2;i<=n;i++) res=res+(a[i]-a[i-1])*(2*i-n-2),sum+=res;//其实是+(a[i]-a[i-1])*(i-1)-(a[i]-a[i-1])*(n-i+1) printf("%lld",sum); return 0; } ```