Pagini recente » Cod sursa (job #2780512) | Cod sursa (job #2946291) | Cod sursa (job #1481117) | Cod sursa (job #1028458) | Cod sursa (job #2838591)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("avioane.in");
ofstream fout ("avioane.out");
const int NMAX=1e5+5;
long long kon=0,v[NMAX],tot[NMAX],n;
void divimp(long long st,long long dr,long long dre,long long sta)
{
long long mij,maxim=1,p,i,j;
if(st>dr)
return;
mij=(st+dr)/2;
for(i=dre;i<=sta && i<mij;i++)
{
if(1LL*(mij-i)*v[i]>maxim)
{
maxim=1LL*(mij-i)*v[i];
p=i;
}
}
tot[mij]=p;
maxim=maxim+1LL*(n-mij+1)*v[mij];
kon=max(kon,maxim);
divimp(mij+1,dr,tot[mij],sta);
divimp(st,mij-1,dre,tot[mij]);
}
int main()
{
long long i,j;
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
sort(v+1,v+n+1);
divimp(1,n,1,n);
fout<<kon<<'\n';
return 0;
}