Cod sursa(job #2871809)

Utilizator db_123Balaban David db_123 Data 15 martie 2022 19:44:56
Problema Fabrica Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream cin("fabrica.in");
ofstream cout("fabrica.out");

struct Procesor{
    int timpProcesare;
    int pos;
    //int tip;
    bool operator<(Procesor a) const{
        return timpProcesare > a.timpProcesare;
    }
};
int n,nA,nB;
int solA;
vector<int> vA,vASol,vB,vBSol;
priority_queue<Procesor> Q;


int main()
{
    Procesor p;
    int timpCrt,pos,timpTotal=0;
    cin>>n>>nA>>nB;
    vA.resize(nA+1);
    vASol.resize(nA+1);
    vB.resize(nB+1);
    vBSol.resize(nB+1);

    for(int i=1;i<=nA;i++){
        cin>>vA[i];
        Q.push({vA[i],i});
    }

    for(int i=1;i<=n;i++){
        p = Q.top();
        timpCrt=p.timpProcesare;
        pos=p.pos;
        vASol[i]=timpCrt;
        Q.pop();
        Q.push({timpCrt+vA[pos],pos});
    }
    cout<< timpCrt;

    while(!Q.empty()){
        Q.pop();
    }

    for(int i=1;i<=nB;i++){
        cin>>vB[i];
        Q.push({vB[i],i});
    }

    for(int i=1;i<=n;i++){
        p = Q.top();
        timpCrt=p.timpProcesare;
        pos=p.pos;
        vBSol[i]=timpCrt;
        Q.pop();
        Q.push({timpCrt+vB[pos],pos});
    }
    for(int i=1;i<=n;i++)
    {
        timpTotal=max(timpTotal,vASol[i]+vBSol[n-i+1]);
    }
    cout<<" "<<timpTotal;
}