Pagini recente » Cod sursa (job #2070227) | Cod sursa (job #315135) | Cod sursa (job #2755253) | Cod sursa (job #31080) | Cod sursa (job #1228369)
#include<cstdio>
#include<algorithm>
using namespace std;
int n,dirty[100005],cash[100005];
long long v[100005];
void solv(int st,int dr)
{
if(st>dr)
return ;
int mi,i;
long long sol;
sol=0;
mi=(st+dr)/2;
for(i=dirty[st-1];i<=dirty[dr+1] && i<=mi;i++)
if(sol<1LL*(n-mi+1)*cash[mi]+1LL*cash[i]*(mi-i))
{
sol=1LL*(n-mi+1)*cash[mi]+1LL*cash[i]*(mi-i);
v[mi]=sol;
dirty[mi]=i;
}
solv(st,mi-1);
solv(mi+1,dr);
}
int main()
{
freopen("avioane.in","r",stdin);
freopen("avioane.out","w",stdout);
int i;
long long sol;
sol=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&cash[i]);
sort(cash+1,cash+n+1);
dirty[0]=1;
dirty[n+1]=n;
solv(1,n);
for(i=1;i<=n;i++)
if(v[i]>sol)
sol=v[i];
printf("%lld\n",sol);
return 0;
}