Cod sursa(job #994786)

Utilizator primulDarie Sergiu primul Data 6 septembrie 2013 12:48:30
Problema Fabrica Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <queue>
#include <algorithm>
using namespace std;
 
 
#define PII pair<int, int>
#define mp make_pair
 
priority_queue<PII, vector<PII>, greater<PII> > Q;
int N, nrA, nrB, A[100010], B[100010], V[100010], ans1, ans2;
 
 
int main()
{
    freopen("fabrica.in", "r", stdin);
    freopen("fabrica.out", "w", stdout);
    int i;
    scanf("%i %i %i", &N, &nrA, &nrB);
    for(i = 1; i <= nrA; i++)
    {
          scanf("%i", &V[i]);
          Q.push(mp(V[i], V[i]));
    }
    for(i = 1; i <= N; i++)
    {
          A[i] = Q.top().first;
          Q.push(mp(Q.top().first + Q.top().second, Q.top().second));
          Q.pop();
    }
    while(!Q.empty()) Q.pop();
    for(i = 1; i <= nrB; i++)
    {
          scanf("%i", &V[i]);
          Q.push(mp(V[i], V[i]));
    }
    for(i = 1; i <= N; i++)
    {
          B[i] = Q.top().first;
          Q.push(mp(Q.top().first + Q.top().second, Q.top().second));
          Q.pop();
    }
    for(i = 1; i <= N; i++)
    {
          ans1 = max(ans1, A[i]);
          ans2 = max(ans2, A[i] + B[N - i + 1]);
    }
    printf("%i %i\n", ans1, ans2);
    return 0;
}