Pagini recente » Cod sursa (job #2575080) | Cod sursa (job #408987) | Cod sursa (job #2982332) | Cod sursa (job #2669407) | Cod sursa (job #2052506)
//O(n log n)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fi("avioane.in");
ofstream fo("avioane.out");
long long rez;
int n,i,A[100001],D[100001];
void solve(int st, int dr)
{
int mij,i;
mij=(st+dr)/2;
long long maxim=0LL,val=0LL;
if(st>dr)
return;
for(i=D[st-1]; i<=D[dr+1] && i<mij; i++)
{
val=1LL*(mij-i)*A[i]+1LL*(n-mij+1)*A[mij];
if(val>maxim)
{
maxim=val;
D[mij]=i;
}
}
if(maxim>rez)
rez=maxim;
solve(st,mij-1);
solve(mij+1,dr);
}
int main()
{
fi>>n;
for(i=1; i<=n; i++)
fi>>A[i];
sort(A+1,A+n+1);
D[0]=1;
D[n+1]=n;
solve(1,n);
fo<<rez<<"\n";
fi.close();
fo.close();
return 0;
}