Pagini recente » Cod sursa (job #1505882) | Cod sursa (job #1360023) | Cod sursa (job #349474) | Cod sursa (job #888586) | Cod sursa (job #1758230)
#include <fstream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
#include <queue>
#include <functional>
using namespace std;
using ll = long long;
using uint = unsigned int;
using ull = unsigned long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
#define NMAX 100010
#define PMAX 50000
int ta[PMAX], tb[PMAX];
int va[NMAX], vb[NMAX];
priority_queue<pii, vector<pii>, greater<pii>> Q;
void solve(int, int, int[], int[]);
int main()
{
int i, n, nra, nrb, tmax;
ifstream fin("fabrica.in");
ofstream fout("fabrica.out");
fin >> n >> nra >> nrb;
for (i = 0; i < nra; ++i) fin >> ta[i];
for (i = 0; i < nrb; ++i) fin >> tb[i];
solve(n, nra, ta, va);
solve(n, nrb, tb, vb);
for (tmax = 0, i = 1; i <= n; ++i) tmax = max(tmax, va[i] + vb[n + 1 - i]);
fout << va[n] << ' ' << tmax << '\n';
fin.close();
fout.close();
return 0;
}
void solve(int n, int nrProc, int t[], int v[])
{
while (!Q.empty()) Q.pop();
for (int i = 0; i < nrProc; ++i) Q.push({t[i], i});
for (int i = 1; i <= n; ++i)
{
pii aux = Q.top();
Q.pop();
v[i] = aux.first;
Q.push({v[i] + t[aux.second], aux.second});
}
}