Pagini recente » Cod sursa (job #731138) | Cod sursa (job #510939) | Cod sursa (job #1372152) | Cod sursa (job #1587058) | Cod sursa (job #1237671)
#include <algorithm>
#include <fstream>
using namespace std;
ifstream fin("avioane.in");
ofstream fout("avioane.out");
const int inf= 1<<30;
const int nmax= 100000;
int v[nmax+1], d[nmax+1];;
int p( int x, int y ) {
if ( v[x]!=v[y] ) return (v[y]*y-v[x]*x)/(v[y]-v[x])+1;
return inf;
}
int main( ) {
int n, sol, l= 1, r= 1;
fin>>n;
for ( int i= 1; i<=n; ++i ) {
fin>>v[i];
}
sort( v+1, v+n+1 );
sol= n*v[1], d[r]= 1;
for ( int i= 2; i<=n; ++i, ++r, d[r]= i-1 ) {
for ( ; l<=r-1 && i>=p(d[l], d[l+1]); ++l ) ;
sol= max( sol, v[i]*(n-i+1)+v[d[l]]*(i-d[l]) );
for ( ; l<=r-1 && p(d[r], i)<=p(d[r-1], i); --r ) ;
}
fout<<sol<<"\n";
return 0;
}