Cod sursa(job #1442463)

Utilizator borcanirobertBorcani Robert borcanirobert Data 25 mai 2015 15:53:51
Problema Fabrica Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <cstdio>
#include <set>
using namespace std;

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

const int MAX = 100010;
multiset< pair<int, int> > Q;
int na, nb;
int a[MAX], b[MAX];
int N;
int T1, T2;

void Read();
void SolveTime( int a[MAX] );

int main()
{
    Read();
    fprintf( g, "%d\n%d\n", T1, T2 );
    fclose(f);
    fclose(g);
    return 0;
}

void Read()
{
    int i;
    fscanf( f, "%d%d%d", &N, &na, &nb );
    for ( i = 1; i <= na; i++ )
    {
        fscanf( f, "%d", &a[i] );
        Q.insert( pair<int, int>( a[i], a[i] ) );
    }
    SolveTime( a );
    Q.clear();
    for ( i = 1; i <= nb; i++ )
    {
        fscanf( f, "%d", &b[i] );
        Q.insert( pair<int, int>( b[i], b[i] ) );
    }
    SolveTime( b );

    for ( i = 1; i <= N; i++ )
    {
        T2 = max( T2, a[i] + b[N - i + 1] );
    }
    T1 = a[N];
}

void SolveTime( int a[MAX] )
{
    int i;
    pair<int, int> x;
    for ( i = 1; i <= N; i++ )
    {
        pair<int, int> x = *(Q.begin());
        a[i] = x.first;
      //  x = Q.begin().second;
        Q.erase(Q.begin());
        Q.insert( pair<int, int>( x.first + x.second, x.second ) );
    }
}