문제출처 : https://www.acmicpc.net/problem/20117
code
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int N, i, avg=0;
int hoban[100000] = {};
cin >> N;
for (i = 0; i < N; i++)
cin >> hoban[i];
sort(hoban, hoban + N);
if (N % 2)
{
for (i = 0; i < N/2; i++)
avg += hoban[N - 1 - i] * 2;
avg += hoban[i];
}
else
{
for (i = 0; i < N / 2; i++)
avg += hoban[N - 1 - i] * 2;
}
cout << avg;
return 0;
}
문제에서 통째로도 팔수있지만 묶음으로도 판매할 수 있다고 했으니, 최대 가격을 얻을 수 있는 묶음은 가격낮은 소+가격높은 소 순으로 2마리씩 묶어준다.
이러면 항상 가격이 높은 소의 가격으로 판매할 수 있기때문이다.