Cod sursa(job #918345)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 18 martie 2013 20:15:58
Problema Fabrica Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 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;
}