PKU 2231 - Moo Volume (计算贡献)
题意
计算出每个点到其他点的距离。
思路
和CF上有一题一样。一般的方法是$O(n^2)$的。
sort一下,计算出每个点对答案的贡献。
对于第i个点,贡献了$i-1$个正,$n-i$个负。
因为是双向的,所以最后结果要乘以2.
代码
LL arr[MAXN];
int main()
{
//ROP;
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%lld", &arr[i]);
sort(arr+1, arr+n+1);
LL sum = 0;
for (int i = 1; i <= n; i++)
sum += (2*i-1-n) * arr[i];
printf("%lld\n", sum<<1);
return 0;
}