Cod sursa(job #588424)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 7 mai 2011 22:19:37
Problema Fabrica Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#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);
}