Pagini recente » Cod sursa (job #1864962) | Cod sursa (job #1931599) | Cod sursa (job #2718276) | Cod sursa (job #930572) | Cod sursa (job #1228493)
#include<cstdio>
#include<algorithm>
long long x;
int n, v[100005], d[100005];
long long calc(int l, int r){
if(l>r)
return -1;
int b = (l+r)/2;
long long best = 0;
for(int e = d[l-1]; e <= b && e <= d[r+1]; e++){
long long cur = 1LL * v[b] * (n-b) + 1LL * v[e] * (b-e);
if(cur > best)
best = cur, d[b] = e;
}
return std::max(best, std::max(calc(l, b-1), calc(b+1, r)));
}
int main(){
freopen("avioane.in","r",stdin);
#ifdef INFOARENA
freopen("avioane.out","w",stdout);
#endif
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",v+i);
std::sort(v,v+n);
d[n] = n;
printf("%lld", calc(0, n-1));
return 0;
}