思路:
先快排,然后用公式计算出总的volume值。
#include <stdio.h>

typedef unsigned __int64 u64;

__inline void swap(u64 *a, u64 *b)


{
u64 t = *a;
*a = *b;
*b = t;
}

void qs(u64 *arr, int len)


{
int p, r, l;

if (len < 2)
return ;

l = 0;
r = len - 2;
p = len - 1;

while (1)
{
while (l < p && arr[l] < arr[p])
l++;
while (r >= 0 && arr[r] >= arr[p])
r--;
if (l > r)
break;
swap(&arr[l], &arr[r]);
}
swap(&arr[l], &arr[p]);

qs(arr, l);
qs(arr + l + 1, len - l - 1);
}

u64 in[10024];
int N;

int main()


{
int i;
u64 s;

freopen("e:\\test\\in.txt", "r", stdin);

scanf("%d", &N);
for (i = 0; i < N; i++)
scanf("%llu", &in[i]);
qs(in, N);

s = 0;
for (i = 1; i <= N - 1; i++)
s += 2 * i * (N - i) * (in[i] - in[i - 1]);
printf("%llu\n", s);

return 0;
}
