Cod sursa(job #3293864)

Utilizator Andrei1209Andrei Mircea Andrei1209 Data 12 aprilie 2025 19:39:17
Problema Fabrica Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>

#include <queue>
using namespace std;
ifstream fin("fabrica.in");
ofstream fout("fabrica.out");

const int Nmax = 100000 + 5;
int n, nrA, nrB;
long long tA[Nmax], tB[Nmax];
priority_queue<pair<long long, int>> pq;/// {cand se termina, durata afectuarii unui task}
int main()
{
    fin >> n >> nrA >> nrB;
    int i;
    long long x;
    for ( i = 1; i <= nrA; ++i )
    {
        fin >> x;
        pq.push({-x, x});
    }

    for ( i = 1; i <= n; ++i )
    {
        pair <long long, int> r;
        r = pq.top();
        pq.pop();
        r.first = -r.first;
        tA[i] = r.first;
        r.first = -(r.first + r.second);
        pq.push(r);
    }
    while ( pq.empty() == false )
        pq.pop();

    for ( i = 1; i <= nrB; ++i )
    {
        fin >> x;
        pq.push({-x, x});
    }

    for ( i = 1; i <= n; ++i )
    {
        pair <long long, int> r;
        r = pq.top();
        pq.pop();
        r.first = -r.first;
        tB[i] = r.first;
        r.first = -(r.first + r.second);
        pq.push(r);
    }
    long long sol = -1;
    for ( i = 1; i <= n; ++i )
        sol = max(sol, tA[i] + tB[n - i + 1]);


    fout << tA[n] << " " << sol << '\n';
    return 0;
}