Pagini recente » Cod sursa (job #799678) | Cod sursa (job #2527788) | Cod sursa (job #2762020) | Cod sursa (job #3179583) | Cod sursa (job #1747230)
# include <iostream>
# include <fstream>
# include <algorithm>
using namespace std;
# define MAX_N 100000
int v[MAX_N];
int best[MAX_N];
int n;
void solve( int i1, int j1, int i2, int j2 ) {
if ( j1 < i1 )
return;
int m, b, i;
m = ( i1 + j1 ) / 2;
b = 0;
for ( i = i2; i <= j2; i ++ ) {
if ( v[i] * ( n - i ) + v[m] * ( i - m ) > v[b] * ( n - b ) + v[m] * ( b - m ) )
b = i;
}
best[m] = b;
solve( i1, m - 1, i2, b );
solve( m + 1, j1, b, j2 );
}
int main() {
ifstream fin( "avioane.in" );
ofstream fout( "avioane.out" );
int i, m;
fin >> n;
for ( i = 0; i < n; i ++ )
fin >> v[i];
sort( v, v + n );
solve( 0, n - 1, 0, n - 1 );
m = 0;
for ( i = 0; i < n; i ++ )
m = max( m, v[i] * ( best[i] - i) + v[best[i]] * ( n - best[i] ) );
fout << m;
fin.close();
fout.close();
return 0;
}