Submission #9786

#TimeUsernameProblemLanguageResultExecution timeMemory
9786silasUniting (kriii2_U)C++98
0 / 4
20 ms1676 KiB
#include <iostream>
#include <queue>
#include <functional>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	priority_queue<int, vector<int>, greater<int> > min_heap;
	vector<int> arr;
	int cost = 0; // 비용의 합의 최솟값
	int num, temp; // num : 부서의 수
	cin >> num;
	for (int i = 0 ; i < num; i++) {
		cin >> temp;
		arr.push_back(temp);
		min_heap.push(temp);
	}
	sort(arr.begin(), arr.end());
	while (arr.size() > 1) {
		cost += arr[0] * arr[arr.size() - 1];
		int tmp = arr[0] + arr[arr.size() - 1];
		arr.erase(arr.begin()); arr.pop_back();
		arr.push_back(tmp);
		sort(arr.begin(), arr.end());
	}
	int cost2 = 0;
	while (min_heap.size() > 1) {
		int tmp1 = min_heap.top(); min_heap.pop();
		int tmp2 = min_heap.top(); min_heap.pop();
		cost2 += tmp1 * tmp2;
		min_heap.push(tmp1 + tmp2);
	}
	cost < cost2 ? cout << cost << endl : cout << cost2 << endl;
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...