Pagini recente » Cod sursa (job #412669) | Cod sursa (job #3169465) | Cod sursa (job #947496) | Cod sursa (job #3189411) | Cod sursa (job #1747241)
# include <iostream>
# include <fstream>
# include <algorithm>
using namespace std;
# define MAX_N 100000
long long v[MAX_N];
long long best[MAX_N];
long long n;
void solve( long long i1, long long j1, long long i2, long long j2 ) {
if ( j1 < i1 )
return;
long long 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" );
long long 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;
}