Cod sursa(job #587685)

Utilizator SpiderManSimoiu Robert SpiderMan Data 5 mai 2011 16:30:09
Problema Fabrica Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
# 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 ) ;
}