Cod sursa(job #2604688)

Utilizator mircearoataMircea Roata Palade mircearoata Data 23 aprilie 2020 11:51:49
Problema Fabrica Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>

using namespace std;

ifstream in("fabrica.in");
ofstream out("fabrica.out");

priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pqA;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pqB;

int n, a, b;
int tA[100005], tB[100005];
int ansA, ansB;

int main() {
	in >> n >> a >> b;
	while (a--) {
		int x;
		in >> x;
		pqA.push({ x, x });
	}
	while (b--) {
		int x;
		in >> x;
		pqB.push({ x, x });
	}
	for (int i = 1; i <= n; i++) {
		auto cA = pqA.top();
		pqA.pop();
		tA[i] = cA.first;
		cA.first += cA.second;
		pqA.push(cA);
		ansA = max(ansA, tA[i]);
	}
	for (int i = 1; i <= n; i++) {
		auto cB = pqB.top();
		pqB.pop();
		tB[i] = tA[n - i + 1] + cB.first;
		cB.first += cB.second;
		pqB.push(cB);
		ansB = max(ansB, tB[i]);
	}
	out << ansA << ' ' << ansB;
}