Cod sursa(job #585838)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 30 aprilie 2011 12:08:48
Problema Fabrica Scor 100
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 5-9 Marime 1.12 kb
#include <stdio.h>

#include <queue>

using namespace std;

int n, n1, n2, sol;
int v1[100002], v2[100002];

priority_queue< pair<int,int>, vector< pair<int,int> >, greater< pair<int,int> > > h1, h2;

int main ()
{
    freopen ("fabrica.in", "r", stdin);
    freopen ("fabrica.out", "w", stdout);

    scanf ("%d %d %d", &n, &n1, &n2);

    int i, x;

    for (i = 1; i <= n1; i ++)
    {
        scanf ("%d", &x);
        h1.push (make_pair (x, x));
    }

    for (i = 1; i <= n; i ++)
    {
        v1[i] = h1.top().first;
        h1.push (make_pair (v1[i] + h1.top().second, h1.top().second));
        h1.pop();
    }

    for (i = 1; i <= n2; i ++)
    {
        scanf ("%d", &x);
        h2.push (make_pair (x, x));
    }

    for (i = 1; i <= n; i ++)
    {
        v2[i] = h2.top().first;
        h2.push (make_pair (v2[i] + h2.top().second, h2.top().second));
        h2.pop();
    }

    printf ("%d ", v1[n]);

    int sol = 0;
    for (i = 1; i <= n; i ++)
        if (v1[i] + v2[n - i + 1] > sol)
            sol = v1[i] + v2[n - i + 1];
    printf ("%d\n", sol);

    return 0;
}