//数学公式推导 //先排序,会容易推导写 //A1 A2 A3 A4 A5 //1 2 3 4 5 //D1 D2 D3 D4 D5 (含义很显然) //0 1 2 3 4 //1 0 1 2 3 //2 1 0 1 2 //3 2 1 0 1 //4 3 2 1 0 //是个对称矩阵,将所有的值加起来就是最终答案 //进一步归纳将矩阵的点用 A3-A2等这些关系带入,将他们全部加起来就得到了公式: //ans = 4*(A5-A1) + 3*(A4-A2) + 2*(A3-A3) + 1*(A2-A4) #include<iostream> #include<algorithm> using namespace std; int main() { long long int ans = 0,arr[10010];//得用long long int才能过,害我WA了半天,之前是ans用long long int 而arr没有,不同类型相加有可能会出错……又WA了N次!教训! int n,m; cin >> n; for(int i = 0;i < n;++i) { cin >> arr[i];//想用scanf读会快点,可是却不知道怎么读long long int的格式……哪位高手来指教下…… } sort(arr,arr+n); for(int i = 0;i < n;++i) { ans += (n-1-i) * (arr[n-1-i] - arr[i]); } cout << ans*2 <<endl; return 0; }