와 를 골라서 합체하면 수열의 총 합은 어떻게 될까요? 에 쓰여진 값은 로 변하고, 에 쓰여진 값은 로 변합니다. 수식으로 나타내면 이와 같습니다.
수열의 합은 기존에서 만큼 늘어나는 것을 알 수 있습니다.
어떤 카드를 고르더라도 둘 중 어느 카드도 사라지지 않으므로 언제나 가장 작은 것 만을 그리디하게 고르면 점수를 최소화 할 수 있습니다.
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
PriorityQueue<Long> pq = new PriorityQueue<>();
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < N; i++) pq.offer(Long.parseLong(st.nextToken()));
for (int i = 0; i < M; i++) {
long t = pq.poll() + pq.poll();
pq.offer(t); pq.offer(t);
}
long sum = 0;
for (long x : pq) sum += x;
System.out.println(sum);
}
}