Cod sursa(job #865568)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 26 ianuarie 2013 17:26:20
Problema Fabrica Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>
#include<set>

#define maxn 100005

using namespace std;

FILE*f=fopen("fabrica.in","r");
FILE*g=fopen("fabrica.out","w");

int n,na,nb;
int timeA[maxn],timeB[maxn];
multiset< pair<int,int> >H;

inline void compute ( int *time ){
	
	for ( int i = 1 ; i <= n ; ++i ){
		pair<int,int>now = (*(H.begin()));
		
		time[i] = now.first;
		H.erase(H.begin());
		H.insert(make_pair(now.first+now.second,now.second));
	}
}

int main () {
	
	fscanf(f,"%d %d %d",&n,&na,&nb);
	
	int x;
	for ( int i = 1 ; i <= na ; ++i ){
		fscanf(f,"%d",&x);
		H.insert(make_pair(x,x));
	}
	compute(timeA);
	
	H.clear();
	for ( int i = 1 ; i <= nb ; ++i ){
		fscanf(f,"%d",&x);
		H.insert(make_pair(x,x));
	}
	compute(timeB);
	
	int solA = timeA[n],solB = timeB[n];
	for ( int i = 1 ; i <= n ; ++i ){
		solB = max(solB,timeA[i]+timeB[n-i+1]);
	}
	
	fprintf(g,"%d %d\n",solA,solB);
	
	fclose(f);
	fclose(g);
	
	return 0;
}