Pagini recente » Cod sursa (job #2572036) | Cod sursa (job #180499) | Cod sursa (job #191130) | Cod sursa (job #2046880) | Cod sursa (job #1806479)
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
ifstream fin("avioane.in");
ofstream fout("avioane.out");
int n;
int v[100100];
int d[100100];
int i,j;
void solve(int l,int r)
{
if(l>r)
return ;
int m = (l+r)>>1;
long long best = 0;
int lim = min(m,d[r+1]);
for(int i=d[l-1]; i<=lim; ++i)
{
long long curr = 1LL*v[i]*(m-i);
if(curr>best)
{
best=curr;
d[m]=i;
}
}
solve(l,m-1);
solve(m+1,r);
}
int main()
{
fin>>n;
for(i=1; i<=n; ++i)
fin>>v[i];
sort(v+1,v+n+1);
d[n+1]=n;
solve(1,n);
long long ans = 0;
for(i=1; i<=n; ++i)
ans=max(ans,1LL*v[i]*(n-i+1)+1LL*v[d[i]]*(i-d[i]));
fout<<ans;
}