Cod sursa(job #2293667)

Utilizator Cojocaru_Andrei_CristianCojocaru Andrei Cristian Cojocaru_Andrei_Cristian Data 1 decembrie 2018 13:54:51
Problema Fabrica Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
#include <queue>
#include <algorithm>
using namespace std;

int n,a,b;
int actual[100002];
struct boi
{
    int timp,poz;
};
boi v[50002];
struct cmp
{
    bool operator()(int a, int b)
    {
        return v[a].timp+v[a].poz>v[b].timp+v[b].poz;
    }
};
priority_queue<int,vector<int>,cmp>q;
int main()
{
    ifstream cin("fabrica.in");
    ofstream cout("fabrica.out");
    cin>>n>>a>>b;
    for(int i=1;i<=a;++i)
    {
        cin>>v[i].poz;
        q.push(i);
    }
    for(int i=1;i<=n;++i)
    {
        int x=q.top();
        actual[i]=v[x].timp+v[x].poz;
        v[x].timp+=v[x].poz;
        q.pop();
        q.push(x);
    }
    sort(actual+1,actual+n+1);
    cout<<actual[n]<<" ";
    while(!q.empty())
        q.pop();
    for(int i=1;i<=b;++i)
    {
        cin>>v[i].poz;
        v[i].timp=0;
        q.push(i);
    }
    int tmax=0;
    for(int i=n;i>=1;--i)
    {
        int x=q.top();
        tmax=max(tmax,actual[i]+v[x].timp+v[x].poz);
        v[x].timp+=v[x].poz;
        q.pop();
        q.push(x);
    }
    cout<<tmax;
    return 0;
}