Pagini recente » Cod sursa (job #1370237) | Cod sursa (job #1659733) | Cod sursa (job #2565054) | Cod sursa (job #1453242) | Cod sursa (job #1440730)
#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++ )
{
if ( n2[i - 1] + nr[i - 1] > a[i] )
{
n2[i] = n2[i - 1] + nr[i - 1];
nr[i] = nr[i - 1];
}
else
{
n2[i] = a[i];
nr[i] = a[i];
}
}
i = i;
for ( i = 1; i < N; i++ )
{
maxim = max( maxim, n1[i + 1] + n2[i] );
}
fprintf( g, "%d\n", maxim );
}