Pagini recente » Cod sursa (job #2941219) | Cod sursa (job #2910679) | Cod sursa (job #1464407) | Cod sursa (job #2641660) | Cod sursa (job #1690322)
#include <cstdio>
#include <queue>
#include <algorithm>
#define pii pair<int,int>
using namespace std;
const int NM=100005;
priority_queue< pii, vector< pii >, greater< pii > > Heap;
int bere_a[NM], bere_b[NM], a[NM], b[NM], i,n, A,B, Max=-1;
pair<int,int> Z;
int main()
{
freopen("fabrica.in", "r", stdin);
freopen("fabrica.out", "w", stdout);
scanf("%d%d%d", &n, &A,&B);
for(i=1; i<=A; ++i) scanf("%d", &a[i]);
for(i=1; i<=B; ++i) scanf("%d", &b[i]);
for(i=1; i<=A; ++i) Heap.push({a[i],i});
for(i=1; i<=n; ++i)
{
Z=Heap.top();
bere_a[i]=Z.first;
Heap.push({bere_a[i]+a[Z.second], Z.second});
Heap.pop();
}
printf("%d ", bere_a[n]);
while(Heap.size()) Heap.pop();
for(i=1; i<=B; ++i) Heap.push({b[i],i});
for(i=1; i<=n; ++i)
{
Z=Heap.top();
bere_b[i]=Z.first;
Heap.push({ bere_b[i]+b[Z.second], Z.second});
Heap.pop();
}
for(i=1; i<=n; ++i) Max=max(Max, bere_a[i]+bere_b[n-i+1] );
printf("%d\n", Max);
return 0;
}