Pagini recente » Cod sursa (job #69795) | Cod sursa (job #2657464) | Cod sursa (job #1866626) | Cod sursa (job #478160) | Cod sursa (job #1717394)
#include<bits/stdc++.h>
using namespace std;
int i,n,a[100005],p[100005];
long long rs,maybe[100005];
void Solve(int left,int right) {
int pivot=(left+right)/2;
maybe[pivot]=-1e18;
for(int i=p[left-1];i<=p[right+1];++i)
{
if(maybe[pivot]>=1LL*(pivot-i+1)*a[i] || i>pivot) continue;
maybe[pivot]=1LL*(pivot-i+1)*a[i]; p[pivot]=i;
}
if(left<pivot) Solve(left,pivot-1);
if(right>pivot) Solve(pivot+1,right);
}
int main()
{
ifstream cin("avioane.in");
ofstream cout("avioane.out");
ios_base::sync_with_stdio(0);
cin>>n; p[n+1]=n;
for(i=1;i<=n;++i) cin>>a[i];
sort(a+1,a+n+1);
Solve(1,n);
for(i=0;i<=n;++i) rs=max(rs,maybe[i]+1LL*(n-i)*a[i+1]);
cout<<rs<<'\n';
return 0;
}