Pagini recente » Cod sursa (job #1671514) | Cod sursa (job #1960769) | Cod sursa (job #72394) | Istoria paginii runda/preoji_11-12_2/clasament | Cod sursa (job #1515580)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin( "avioane.in" ); ofstream fout( "avioane.out" );
const int nmax = 1e5;
const long long inf = (1LL << 62);
long long v[ nmax + 1 ];
int d[ nmax + 1 ];
long long ans;
void query( int p, int x, int y ) {
ans = -inf;
for( int i = x; i <= y; ++ i ) {
if ( ans < (p - i) * v[ i ] ) {
d[ p ] = i;
ans = (p - i) * v[ i ];
}
}
}
void solve( int x, int y ) {
if ( x == y - 1 ) {
return ;
}
query( (x + y) / 2, d[ x ], d[ y ] );
solve( x, (x + y) / 2 );
solve( (x + y) / 2, y );
}
int main() {
int n;
fin >> n;
d[ 1 ] = 1;
for( int i = 1; i <= n; ++ i ) {
fin >> v[ i ];
}
sort( v + 1, v + n + 1 );
query( n, 1, n );
solve( 1, n );
ans = -inf;
for( int i = 1; i <= n; ++ i ) {
if ( ans < v[ i ] * (n - i + 1) + v[ d[ i ] ] * (i - d[ i ]) ) {
ans = v[ i ] * (n - i + 1) + v[ d[ i ] ] * (i - d[ i ]);
}
}
fout << ans << "\n";
fin.close();
fout.close();
return 0;
}