Pagini recente » Cod sursa (job #2585945) | Cod sursa (job #704807) | Profil razvanboabes | Cod sursa (job #3157557) | Cod sursa (job #3293864)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("fabrica.in");
ofstream fout("fabrica.out");
const int Nmax = 100000 + 5;
int n, nrA, nrB;
long long tA[Nmax], tB[Nmax];
priority_queue<pair<long long, int>> pq;/// {cand se termina, durata afectuarii unui task}
int main()
{
fin >> n >> nrA >> nrB;
int i;
long long x;
for ( i = 1; i <= nrA; ++i )
{
fin >> x;
pq.push({-x, x});
}
for ( i = 1; i <= n; ++i )
{
pair <long long, int> r;
r = pq.top();
pq.pop();
r.first = -r.first;
tA[i] = r.first;
r.first = -(r.first + r.second);
pq.push(r);
}
while ( pq.empty() == false )
pq.pop();
for ( i = 1; i <= nrB; ++i )
{
fin >> x;
pq.push({-x, x});
}
for ( i = 1; i <= n; ++i )
{
pair <long long, int> r;
r = pq.top();
pq.pop();
r.first = -r.first;
tB[i] = r.first;
r.first = -(r.first + r.second);
pq.push(r);
}
long long sol = -1;
for ( i = 1; i <= n; ++i )
sol = max(sol, tA[i] + tB[n - i + 1]);
fout << tA[n] << " " << sol << '\n';
return 0;
}