Cod sursa(job #2498309)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 23 noiembrie 2019 19:10:51
Problema Fabrica Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <set>
#include <vector>
#include <algorithm>

using namespace std;

ifstream fin("fabrica.in");
ofstream fout("fabrica.out");

const int VAL=50005;

int N, NRA, NRB, i, j;
int A[VAL], B[VAL], ANS, X, ind;
int bestA[2*VAL], bestB[2*VAL];
set < pair <int, int> > Heap;
set < pair <int, int> > :: iterator it;

int main()
{
    fin >> N >> NRA >> NRB;
    for (i=1; i<=NRA; i++)
    {
        fin >> A[i];
        Heap.insert({A[i], i});
    }
    for (i=1; i<=N; i++)
    {
        it=Heap.begin();
        bestA[i]=X=it->first;
        ind=it->second;
        Heap.erase(it);
        X+=A[ind];
        Heap.insert({X, ind});
    }

    while (Heap.empty()==false)
    {
        it=Heap.begin();
        Heap.erase(it);
    }
    for (i=1; i<=NRB; i++)
    {
        fin >> B[i];
        Heap.insert({B[i], i});
    }
    for (i=1; i<=N; i++)
    {
        it=Heap.begin();
        bestB[i]=X=it->first;
        ind=it->second;
        Heap.erase(it);
        X+=B[ind];
        Heap.insert({X, ind});
    }
    for (i=1; i<=N; i++)
        ANS=max(ANS, bestA[i]+bestB[N-i+1]);
    fout << bestA[N] << " " << ANS << '\n';
    fin.close();
    fout.close();
    return 0;
}