Pagini recente » Borderou de evaluare (job #1653618) | Borderou de evaluare (job #176841) | Borderou de evaluare (job #1001306) | Borderou de evaluare (job #1684138) | Cod sursa (job #2498309)
#include <fstream>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("fabrica.in");
ofstream fout("fabrica.out");
const int VAL=50005;
int N, NRA, NRB, i, j;
int A[VAL], B[VAL], ANS, X, ind;
int bestA[2*VAL], bestB[2*VAL];
set < pair <int, int> > Heap;
set < pair <int, int> > :: iterator it;
int main()
{
fin >> N >> NRA >> NRB;
for (i=1; i<=NRA; i++)
{
fin >> A[i];
Heap.insert({A[i], i});
}
for (i=1; i<=N; i++)
{
it=Heap.begin();
bestA[i]=X=it->first;
ind=it->second;
Heap.erase(it);
X+=A[ind];
Heap.insert({X, ind});
}
while (Heap.empty()==false)
{
it=Heap.begin();
Heap.erase(it);
}
for (i=1; i<=NRB; i++)
{
fin >> B[i];
Heap.insert({B[i], i});
}
for (i=1; i<=N; i++)
{
it=Heap.begin();
bestB[i]=X=it->first;
ind=it->second;
Heap.erase(it);
X+=B[ind];
Heap.insert({X, ind});
}
for (i=1; i<=N; i++)
ANS=max(ANS, bestA[i]+bestB[N-i+1]);
fout << bestA[N] << " " << ANS << '\n';
fin.close();
fout.close();
return 0;
}