Cod sursa(job #586606)

Utilizator loginLogin Iustin Anca login Data 2 mai 2011 15:51:54
Problema Fabrica Scor 18
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
# include <fstream>
# include <iostream>
# include <algorithm>
# include <set>
# define DIM 50003
# define mp make_pair
# define fs first
# define sc second
using namespace std;
unsigned int n, na, nb, a[DIM], b[DIM], r1, r2, v[2*DIM];
multiset< pair <unsigned int,unsigned int> >S;

void solve ()
{
	unsigned int nr=0, t, p=1, tmp, d, i;
	for(;p<=na && a[p]==a[1];++p)
	{
		v[++nr]=a[p];
		S.insert(mp(2*a[p], a[p]));
	}
	t=a[1];
	while (nr<n)
	{
		t=S.begin()->fs;
		while (S.size() && (S.begin())->fs<=t)
		{
			tmp=(S.begin())->fs;
			d=(S.begin())->sc;
			S.erase(S.begin());
			S.insert(mp(tmp+d, d));
			v[++nr]=tmp;
		}
		for(;p<=na && a[p]<=t;++p)
		{
			S.insert(mp(2*a[p],a[p]));
			v[++nr]=a[p];
		}
	}
	r1=t;
}

int main ()
{
	ifstream fin ("fabrica.in");
	ofstream fout ("fabrica.out");
	fin>>n>>na>>nb;
	for(int i=1;i<=na;++i)fin>>a[i];
	for(int i=1;i<=nb;++i)fin>>b[i];
	sort(a+1, a+na+1);
	sort(b+1, b+nb+1);
	solve ();
	fout<<r1<<" "<<r2;
	return 0;
}