그리디 알고리즘으로 리소스 분배하는 문제
리소스를 분배하기 위해 가장 짧게 사용하는 순으로 사용
//link: https://www.acmicpc.net/problem/11399
#include <iostream>
#include <vector>
#include <algorithm>
int CalculateMinTime(std::vector<int> v, const int N){
std::sort(v.begin(), v.end());
int time = 0;
for (int i=0; i<N; ++i){
time += (N-i)*v[i];
}
return time;
}
int main(){
int N = 0;
std::cin >> N;
std::vector<int> v;
for (int i=0; i<N; ++i){
int temp = 0;
std::cin >> temp;
v.push_back(temp);
}
std::cout << CalculateMinTime(v, N) << std::endl;
}