https://www.acmicpc.net/problem/15903
15903번: 카드 합체 놀이
첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1,
www.acmicpc.net
#include <bits/stdc++.h>
//[C++] 백준 문제풀이 (Greedy)
int main(int argc, char *argv[])
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::priority_queue<long long, std::vector<long long>, std::greater<>> pq;
int n, m;
std::cin >> n >> m;
int a;
for (int i = 0; i < n; ++i){
std::cin >> a;
pq.push(a);
}
for (int i = 0; i < m; ++i){
long long num1 = pq.top(); pq.pop();
long long num2 = pq.top(); pq.pop();
pq.push(num1 + num2);
pq.push(num1 + num2);
}
long long ret = 0;
while(!pq.empty()){
ret += pq.top(); pq.pop();
}
std::cout << ret << "\n";
return 0;
}
'백준 문제풀이 > Greedy' 카테고리의 다른 글
[C++] 백준 문제풀이 (Greedy) 11000번 강의실 배정 (0) | 2023.07.07 |
---|---|
[C++] 백준 문제풀이 (Greedy) 11501번 주식 (0) | 2023.07.07 |
[C++] 백준 문제풀이 (Greedy) 2847번 게임을 만든 동준이 (0) | 2023.07.07 |