Cod sursa(job #585703)

Utilizator bog29Antohi Bogdan bog29 Data 30 aprilie 2011 11:14:37
Problema Fabrica Scor 10
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 10-12 Marime 1.32 kb
#include<fstream>
#include<algorithm>
#define dmax 100003
using namespace std;
ifstream in("fabrica.in");
ofstream out("fabrica.out");

int n,m,k,c1[dmax],c2[dmax],nrd,ok,bun;
long long t[dmax],x[dmax/2],cp,mn,mx;

int main()
{	
	int i,j;
	
	in>>n>>m>>k;
	
	for(i=1; i<=m; i++)
		in>>c1[i];
		
	for(i=1; i<=k; i++)
		in>>c2[i];

	in.close();
	
	sort( c1+1, c1+m+1);
	sort( c2+1, c2+k+1);
	
	
	
	for(j=1; j<=n; j++)
	{	
		mn = -1;
		
		for(i=1; i<=m; i++)	
		{	
			cp = x[i]+c1[i];	
			
			if(cp < mn || mn == -1)
			{	mn = cp;
				bun = i;
			}	
			cp = 0;
		}	
		
		
		x[bun] = mn;
		t[j] = x[bun];
		
	}

	/*for(i=1; i<=n; i++)
		out<<t[i]<<" ";
	out<<'\n';*/
	
	mx = 0;
	for(i=1; i<=n; i++)
		if(t[i] > mx)
			mx = t[i];
	out<<mx<<" ";	
	
	for(i=1; i<=m; i++)
		x[i]=0;
	
	nrd = 0;
	
	for(j=1; j<=n; j++)
	{	
		mn = -1;
		
		for(i=1; i<=k; i++)	
		{	
			if(x[i] < t[j])
				cp = t[j]+c2[i];
			else cp = x[i]+c2[i];

			if(cp < mn || mn == -1)
			{	mn = cp;			
				bun = i;
			}	
			cp = 0;
		}	
		
		x[bun] = mn;
		t[j] = x[bun];
		
		/*for(i=1; i<=k; i++)	
			out<<x[i]<<" ";
		out<<'\n';*/
	}	
	
	mx = 0;
	for(i=1; i<=n; i++)
		if(t[i] > mx)
			mx = t[i];
	out<<mx<<" ";	
	
	//for(i=1; i<=n; i++)
		//out<<t[i]<<" ";
	
	out.close();
	return 0;
}