Cod sursa(job #2433126)

Utilizator ApostolIlieDanielApostol Daniel ApostolIlieDaniel Data 25 iunie 2019 21:21:49
Problema Fabrica Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

struct Proc {
    int t;
    int d;

};

bool operator < (Proc a, Proc b) {
        return a.t > b.t;
}

int n;

const int MAX_N = 1e5;

int ans1[1 + MAX_N], ans2[1 + MAX_N];

void solve (priority_queue <Proc> p, int ans[]) {
    for (int i = 1; i <= n; i++) {
        Proc x = p.top ();
        ans[i] = x.t;
        p.pop ();
        p.push ({x.t + x.d, x.d});
    }
}


int main() {
    freopen ("fabrica.in", "r", stdin);
    freopen ("fabrica.out", "w", stdout);
    int n1, n2;
    cin >> n >> n1 >> n2;
    priority_queue <Proc> p1, p2;
    for (int i = 1; i <= n1; i++) {
        int x;
        cin >> x;
        p1.push ({x, x});
    }
    for (int i = 1; i <= n2; i++) {
        int x;
        cin >> x;
        p2.push ({x, x});
    }
    solve (p1, ans1);
    solve (p2, ans2);
    int ans = 0;
    for (int i = 1; i <= n; i++)
        ans = max (ans, ans1[i] + ans2[n - i + 1]);
    cout << ans1[n] << " " << ans << "\n";
    return 0;
}