Pagini recente » Cod sursa (job #35971) | Cod sursa (job #2215964) | Cod sursa (job #99569) | Cod sursa (job #665514) | Cod sursa (job #1449945)
# include <cstdio>
# include <queue>
using namespace std ;
# define mp make_pair
# define x first
# define y second
typedef pair < int, int > PR ;
const char *FIN = "fabrica.in", *FOU = "fabrica.out" ;
const int MAX = 100005 ;
priority_queue < PR, vector < PR >, greater < PR > > Q ;
int A[MAX], B[MAX] ;
int N, NRa, NRb, sol ;
int main (void) {
freopen ( FIN, "r", stdin ) ;
scanf ( "%d %d %d", &N, &NRa, &NRb ) ;
for ( int i = 1, x; i <= NRa; ++i ) {
scanf ( "%d", &x ) ;
Q.push ( mp (x, x) ) ;
}
for ( int i = 1; i <= N; ++i ) {
A[i] = Q.top().x ;
Q.push ( mp (A[i] + Q.top().y, Q.top().y) ), Q.pop () ;
}
for ( ; ! Q.empty () ; Q.pop () ) ;
for ( int i = 1, x; i <= NRb; ++i ) {
scanf ( "%d", &x ) ;
Q.push ( mp (x, x) ) ;
}
for ( int i = 1; i <= N; ++i ) {
B[i] = Q.top().x ;
Q.push ( mp (B[i] + Q.top().y, Q.top().y) ), Q.pop () ;
}
for ( int i = 1; i <= N; ++i ) {
sol = max (sol, A[i] + B[N - i + 1]) ;
}
fprintf ( fopen (FOU, "w"), "%d %d", A[N], sol ) ;
}