304092026-07-05 16:21:33KristófRúd darabolás *cpp17Elfogadva 100/1002ms536 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

int main()
{
    int n;cin>>n;
    vector<int> a(n);
    priority_queue<int,vector<int>,greater<int>> pq;
    for(int &x:a){cin>>x;pq.push(x);};
    vector<pair<int,int>> ans;
    int sum=0;
    while(pq.size()>1)
        {
        int n1,n2;
        n1=pq.top();pq.pop();
        n2=pq.top();pq.pop();
        ans.push_back({n1+n2,n1});
        sum+=n1+n2;
        pq.push(n1+n2);
        }
    cout<<sum<<"\n";
    reverse(ans.begin(),ans.end());
    for(auto [x,y]:ans)cout<<x<<" "<<y<<"\n";
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva5/51ms500 KiB
2Elfogadva5/51ms316 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva6/62ms316 KiB
5Elfogadva6/61ms316 KiB
6Elfogadva6/61ms316 KiB
7Elfogadva6/61ms316 KiB
8Elfogadva7/71ms316 KiB
9Elfogadva7/71ms316 KiB
10Elfogadva7/71ms316 KiB
11Elfogadva8/82ms316 KiB
12Elfogadva8/82ms332 KiB
13Elfogadva8/81ms316 KiB
14Elfogadva8/82ms536 KiB
15Elfogadva8/82ms316 KiB