본문 바로가기
알고리즘

백준 g4 13975 파일 합치기 3 c++

by kyj0032 2024. 3. 14.

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";
    }
}