Cod sursa(job #2401922)

Utilizator osiaccrCristian Osiac osiaccr Data 10 aprilie 2019 10:49:59
Problema Fabrica Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <bits/stdc++.h>
#define DEF 100010

using namespace std;

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

int n, nrA, nrB, masA[DEF], masB[DEF], finishA, finishB, globalTime, readyforB, DpA[DEF], DpB[DEF];

priority_queue < pair < int, int >, vector < pair < int, int > >, greater < pair < int, int > > > HA, HB, HBfree;

int main () {

    fin >> n >> nrA >> nrB;

    for (int i = 1; i <= nrA; ++ i) {
        fin >> masA[i];
        HA.push ({masA[i], i});
    }

    for (int j = 1; j <= nrB; ++ j) {
        fin >> masB[j];
        HB.push ({masB[j], j});
    }


    for (int i = 1; i <= n; ++ i) {

        auto top = HA.top ();
        HA.pop ();

        ++ finishA; ++ readyforB;
        globalTime = top.first;

        HA.push ({masA[top.second] + globalTime, top.second});

        DpA[i] = globalTime;

    }

    fout << globalTime << " ";

    for (int i = 1; i <= n; ++ i) {

        auto top = HB.top ();
        HB.pop ();

        ++ finishB;
        globalTime = top.first;

        HB.push ({masB[top.second] + globalTime, top.second});

        DpB[i] = globalTime;

    }

    int maxim = - 1;
    for (int i = 1; i <= n; ++ i) {
        maxim = max (maxim, DpA[i] + DpB[n - i + 1]);
    }

    fout << maxim;

    return 0;
}