Pagini recente » Cod sursa (job #446031) | Cod sursa (job #1176844) | Cod sursa (job #1546069) | Solutia problemei shoturi | Cod sursa (job #2860571)
#include <fstream>
#include <queue>
using namespace std;
ifstream cin("fabrica.in");
ofstream cout("fabrica.out");
int n, nra, nrb;
long long rez;
priority_queue<pair<long long, long long> > pq;
vector<long long> tA, tB;
int main(int argc, const char * argv[]) {
cin>>n>>nra>>nrb;
for(int i=1; i<=nra; i++)
{
long long eta;
cin>>eta;
pq.push({-eta, -1});
}
for(int i=1; i<=n; i++)
{
pair<long long, long long> r = pq.top();
long long time = 1LL * r.first * r.second;
rez = max(rez, time);
tA.push_back(time);
pq.pop();
pq.push({1LL * (time / r.second), r.second - 1});
}
cout<<rez;
while(!pq.empty())
pq.pop();
for(int i=1; i<=nrb; i++)
{
long long eta;
cin>>eta;
pq.push({-eta, -1});
}
for(int i=1; i<=n; i++)
{
pair<long long, long long> r = pq.top();
long long time = 1LL * r.first * r.second;
rez = max(rez, time);
tB.push_back(time);
pq.pop();
pq.push({1LL * (time / r.second), r.second - 1});
}
rez = 0;
for(int i=0; i<tA.size(); i++)
rez = max(rez, tA[i] + tB[tA.size() - i - 1]);
cout<<" "<<rez;
return 0;
}