Cod sursa(job #2872282)

Utilizator cristia_razvanCristia Razvan cristia_razvan Data 16 martie 2022 18:24:51
Problema Fabrica Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define mp make_pair
#define dbg(x) cout << #x <<": " << x << "\n";
using ll = long long;


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

int n;
int nrA, nrB;
vector<int> A, tA;
vector<int> B, tB;

vector<int> compute(vector<int> x) {
	priority_queue < pair<int, int> , vector<pair<int, int> >, greater<pair<int, int> > > q;
	vector<int> ac;

	// for (auto i : x)
	// cout << i << " ";
	// cout << '\n';
	for (auto i : x)
		q.push({i, i});

	for (int i = 0 ; i < n; ++i) {
		auto tp = q.top();
		q.pop();
		ac.pb(tp.first);
		q.push({tp.first + tp.second, tp.second});
	}
	return ac;
}

int main() {

	int ans = 0;

	fin >> n >> nrA >> nrB;

	A.resize(nrA);
	B.resize(nrB);
	for (int i = 0; i < nrA; ++i)
		fin >> A[i];
	for (int i = 0; i < nrB; ++i)
		fin >> B[i];
	tA = compute(A);
	tB = compute(B);

	// cout << '\n';
	// for (int i = 0; i < n; ++i)
	// 	cout << tA[i] << " ";

	for (int i = 0; i < n; ++i)
		ans = max(ans, tA[i] + tB[n - i - 1]);
	fout << tA[n - 1] << " ";
	fout << ans << '\n';
	return 0;
}