Cod sursa(job #1440745)

Utilizator borcanirobertBorcani Robert borcanirobert Data 23 mai 2015 14:00:59
Problema Avioane Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <algorithm>
using namespace std;

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

const int MAX = 100010;
int a[MAX];
int N;
int n1[MAX];
int n2[MAX];
int nr[MAX];
int maxim;

void Read();
void Solve();

int main()
{
    Read();
    Solve();
    fclose(f);
    fclose(g);
    return 0;
}

void Read()
{
    int i;
    fscanf( f ,"%d", &N );
    for ( i = 1; i <= N; i++ )
        fscanf( f, "%d", &a[i] );
    sort( a + 1, a + 1 + N );
}

void Solve()
{
    int i, j;
    for ( i = N; i >= 1; i-- )
    {
        n1[i] = ( N - i + 1 ) * a[i];
    }
    nr[1] = a[1];
    n2[1] = a[1];
    for ( i = 2; i <= N; i++ )
    {
        for ( j = 1; j <= N; j++ )
            n2[i] = max( n2[i], ( i - j + 1 ) * a[j] );
    }
    i = i;
    for ( i = 1; i < N; i++ )
    {
        maxim = max( maxim, n1[i + 1] + n2[i] );
    }
    fprintf( g, "%d\n", maxim );
}