https://www.acmicpc.net/problem/13975
13975번: 파일 합치기 3
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T개의 테스트 데이터로 이루어져 있는데, T는 입력의 맨 첫 줄에 주어진다.각 테스트 데이터는 두 개의 행으로 주어지는데,
www.acmicpc.net
문제 설명과 풀이는 https://kyj0032.tistory.com/95 참고. 그냥 똑같음
testcase, 장 수 (K), 각 장의 파일 크기가 다르므로 int -> long long 으로 바꿔주어야 함
전체 코드
/*boj g4 13975 파일 합치기 3*/
#include <iostream>
#include <queue>
using namespace std;
int T, N;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> T;
while (T--) {
priority_queue<long long, vector<long long>, greater<long long>> pq;
cin >> N;
while (N--) {
long long x;
cin >> x;
pq.push(x);
}
long long ans = 0;
while (pq.size() != 1) {
long long x1 = pq.top();
pq.pop();
long long x2 = pq.top();
pq.pop();
ans += (x1 + x2);
pq.push(x1 + x2);
}
cout << ans << "\n";
}
}
'알고리즘' 카테고리의 다른 글
백준 g2 1781 컵라면 c++ (0) | 2024.03.15 |
---|---|
백준 g2 1655 가운데를 말해요 c++ (set, priority queue) (0) | 2024.03.14 |
백준 g4 1715 카드 정렬하기 c++ (0) | 2024.03.14 |
백준 s1 11286 절댓값 힙 c++ (0) | 2024.03.13 |
백준 s2 1927 최소 힙 c++ (0) | 2024.03.13 |