题意:给你n个数求n个数任意一个数与其他数之差的绝对值之和的和
题解:例如;
6
1 2 5 7 8 9
先排序
正向:
1 --->9 8
1 --->2----->9 8
1 --->5----->9 8
1 --->7----->9 8
1 --->8----->9 8
2 --->8 6
2 --->5----->8 6
2 --->7----->8 6
5--->7 2
sum = 8 * 5 + 6 * 3 + 2 * 1;
逆向同上述方法
sum的值相同;
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long LL;
LL a[10005];
int main()
{
LL n,i,j;
while(~scanf("%lld",&n))
{
for(i = 0;i < n;i++)
scanf("%lld",&a[i]);
sort(a,a+n);
i = 0;j = n - 1;
LL sum = 0;
while(i < j)
{
sum += (a[j] - a[i]) *(j - i);
i++,j--;
}
printf("%lld\n",2*sum);
}
}