Cod sursa(job #1112485)

Utilizator misinoonisim necula misino Data 19 februarie 2014 19:48:47
Problema Fabrica Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<fstream>
#include<queue>
#define N 50100
using namespace std;
ifstream f("fabrica.in");
ofstream g("fabrica.out");
int n,nra,nrb,i,sol1,sol2,x,sola[N],solb[N];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >h;
int main()
{
    f>>n>>nra>>nrb;
    for(i=1;i<=nra;++i)
    {
        f>>x;
        h.push(make_pair(x,x));
    }
    for(i=1;i<=n;++i)///sola[i]=timpul dupa care am terminat de facut a i-a doza la A
    {
        sola[i]=h.top().first;
        h.push(make_pair(h.top().first+h.top().second,h.top().second));
        h.pop();
    }
    while(!h.empty())
    h.pop();
    for(i=1;i<=nrb;++i)
    {
        f>>x;
        h.push(make_pair(x,x));
    }
    for(i=1;i<=n;++i)///solb[i]=timpul dupa care am terminat de facut a i-a doza la B
    {
        solb[i]=h.top().first;
        h.push(make_pair(h.top().first+h.top().second,h.top().second));
        h.pop();
    }
    for(i=1;i<=n;++i)///trebuie sa minimizam timpul de asteptare pt A si B
                     ///luam una cu timp mai mic in A cu una cu timp mai mare in B
    {
        sol1=max(sol1,sola[i]);
        sol2=max(sol2,sola[i]+solb[n-i+1]);
    }
    g<<sol1<<' '<<sol2<<'\n';
    return 0;
}