Cod sursa(job #2402065)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 10 aprilie 2019 12:20:30
Problema Fabrica Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
using namespace std;

const int DIM = 200005;

int arr1[DIM], arr2[DIM], val1[DIM], val2[DIM];

priority_queue<pair<int, int>,
							 vector<pair<int, int>>,
							 greater<pair<int, int>>> prq1, prq2;

int main(void) {
	freopen("fabrica.in", "r", stdin);
	freopen("fabrica.out", "w", stdout);
	int n, na, nb; 
	scanf("%d %d %d", &n, &na, &nb);
	for (int i = 1; i <= na; ++i) {
		scanf("%d", &arr1[i]);
		prq1.push(make_pair(arr1[i], i)); }
	for (int i = 1; i <= nb; ++i) {
		scanf("%d", &arr2[i]);
		prq2.push(make_pair(arr2[i], i)); }
	for (int i = 1; i <= n; ++i) {
		int v, p; tie(v, p) = prq1.top(); prq1.pop();
		val1[i] = v; prq1.push(make_pair(v + arr1[p], p)); }
	for (int i = n; i >= 1; --i) {
		int v, p; tie(v, p) = prq2.top(); prq2.pop();
		val2[i] = v; prq2.push(make_pair(v + arr2[p], p)); }
	int mxm = 0;
	for (int i = 1; i <= n; ++i) {
		mxm = max(mxm, val1[i] + val2[i]); }
	printf("%d %d\n", val1[n], mxm);
	return 0; }