Pagini recente » Cod sursa (job #506279) | Cod sursa (job #3249191) | Borderou de evaluare (job #1809511) | Cod sursa (job #2370121)
#include <bits/stdc++.h>
typedef std::pair<int, int> pii ;
const int NM = 100005 ;
std::priority_queue< pii, std::vector< pii >, std::greater< pii > > heaps ;
int umplu[NM], capac[NM], a[NM], b[NM], i, n, A, B, ans = -1 ;
pii tp ;
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)
heaps.push({a[i], i }) ;
for (i = 1 ; i <= n ; ++ i) {
tp = heaps.top() ;
umplu[i] = tp.first ;
heaps.push({umplu[i] + a[tp.second], tp.second }) ;
heaps.pop() ; }
printf("%d ", umplu[n]) ;
while (!heaps.empty())
heaps.pop() ;
for (i = 1 ; i <= B ; ++ i)
heaps.push({b[i], i }) ;
for (i = 1 ; i <= n ; ++ i) {
tp = heaps.top() ;
capac[i] = tp.first ;
heaps.push({ capac[i] + b[tp.second], tp.second }) ;
heaps.pop() ; }
for (i = 1 ; i <= n ; ++ i)
ans = std::max(ans, umplu[i] + capac[n - i + 1]) ;
printf("%d\n", ans) ;
return 0 ; }