內容 

「唉時間過好快一下就要畢業了呢」溫泉旦說道。真的過的很快莫名其妙已經到了高三了,只剩下最後一次的NPSC可以參加,

溫泉旦不斷的寫題目練習,為了想要進決賽拿到一台筆電,這樣上大學就不用再買一台拉~聰明吧!

但是他發現除了要能夠寫出很多題目以外,還必須要練習寫題目的速度,因為比賽中會計算penalty (答對題數相同者,

以作答耗用時間較少者為優勝。) 看到了這一條溫泉旦就很疑惑,要怎麼樣寫才能讓penalty最低呢?

溫泉旦很電,他一看到題目就能知道每題分別需要寫多久,但由於同一時間只能寫一題,

因此他想找出最佳的解題順序使得penalty最小,其中penalty的計算方式為所有題目解題時間的總和。

舉例來說,若題目有3題,分別需要花1,2,3的時間,那麼如果他照著1,2,3的順序寫,

那麼他分別會在第1,3,6的時間完成該題,因此penalty為1+3+6=10,可以發現10同時也是這個情況下的最低penalty。


輸入說明

本題有多組測資,以EOF結束,測資組數不超過20組。

每筆測資第一行有一個正整數n代表該次練習的題目數量。

第二行有n個正整數ti分別代表每一題所需要的解題時間。

1≤n≤105 , 1≤ti≤104

輸出說明

對於每組測資輸出一個正整數,代表溫泉旦該次練習得到的penalty最低是多少。


範例輸入

3

1 2 3

3

2 2 2

1

10

範例輸出

10

12

10


程式

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    unsigned long long int n;
    while(cin>>n){
        unsigned long long int arr[n];
        for(int i = 0; i < n; i++){
            cin>>arr[i];
        }
        sort(arr, arr+n);
        for(int j = 1; j < n; j++){
            arr[j] += arr[j-1];
        }
        unsigned long long int x = 0;
        for(int l = 0; l < n; l++){
            x += arr[l];
        }
        cout<<x<<"\n";
    }

    return 0;
}


說明

從作答時間少的題目寫到作答時間長的,penalty會最小。