Pagini recente » Cod sursa (job #16602) | Cod sursa (job #135883) | Cod sursa (job #2058374) | Istoria paginii preoni-2006/runda-3/solutii | Cod sursa (job #588424)
Cod sursa(job #588424)
#include <cstdio>
#include <set>
using namespace std;
#define ll long long
#define nmax 100010
int n, nra, nrb, nr, sol, a[nmax], c[nmax], d[nmax];
multiset<pair<int, int> > s;
int main()
{
freopen("fabrica.in","r",stdin);
freopen("fabrica.out","w",stdout);
scanf("%d %d %d", &n, &nra, &nrb);
nr=nra;
int i;
for (i=1; i<=nr; i++)
{
scanf("%d", &a[i]);
s.insert(make_pair(a[i], a[i]));
}
for (i=1; i<=n; i++)
{
c[i]=(*s.begin()).first;
s.insert(make_pair(c[i]+(*s.begin()).second, (*s.begin()).second));
s.erase(s.begin());
}
s.clear();
nr=nrb;
for (i=1; i<=nr; i++)
{
scanf("%d", &a[i]);
s.insert(make_pair(a[i], a[i]));
}
for (i=1; i<=n; i++)
{
d[i]=(*s.begin()).first;
s.insert(make_pair(d[i]+(*s.begin()).second, (*s.begin()).second));
s.erase(s.begin());
}
for (i=1; i<=n; i++)
if (c[i]>sol) sol=c[i];
printf("%d ",sol);
for (i=1; i<=n; i++) sol=max(sol, c[i]+d[n-i+1]);
printf("%d ",sol);
}