Pagini recente » Cod sursa (job #2102993) | Cod sursa (job #697416) | Cod sursa (job #1099604) | Cod sursa (job #1274563) | Cod sursa (job #1227827)
#include <fstream>
#include <algorithm>
#define NMAX 100005
#define lint long long int
#define inf 858993459200005ll
using namespace std;
int n,v[NMAX];
lint din[NMAX];
int poz[NMAX];
void divide(int st,int dr){
if(dr<st)
return;
int i=(st+dr)>>1;
din[i]=-inf;
for(int j=poz[st-1];j<=poz[dr+1];j++)
if((n-i+1ll)*v[i]+1ll*(i-j)*v[j]>din[i]){
din[i]=(n-i+1ll)*v[i]+1ll*(i-j)*v[j];
poz[i]=j;
}
divide(st,i-1);
divide(i+1,dr);
}
int main()
{
ifstream cin("avioane.in");
ofstream cout("avioane.out");
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
sort(v+1,v+n+1);
poz[0]=1;
poz[n+1]=n;
divide(1,n);
lint ans=-inf;
for(int i=1;i<=n;i++)
if(din[i]>ans)
ans=din[i];
cout<<ans<<'\n';
cin.close();
cout.close();
return 0;
}