Pagini recente » Cod sursa (job #1304184) | Cod sursa (job #1124923) | Cod sursa (job #2292454) | Cod sursa (job #2529681) | Cod sursa (job #585794)
Cod sursa(job #585794)
#include <stdio.h>
#include <algorithm>
using namespace std;
long long n,maxx,s,i,ind,v[100010],v2[100010],left,right,sol;
int main()
{
freopen("avioane.in","r",stdin);
freopen("avioane.out","w",stdout);
scanf("%lld",&n);
for (i=1;i<=n;++i)
{
scanf("%lld",&v[i]);
}
sort(v+1,v+n+1);
for (i=1;i<=n;++i)
v2[i]=v[i];
for (i=1;i<=n;++i)
if (v[i]*(n-i+1)>maxx)
{
maxx=v[i]*(n-i+1);
ind=i;
}
left=ind-200;right=ind+200;
if (left<1) left=1;
if (right>n) right=n;
for (ind=left;ind<=right;++ind)
{
s=0;
for (i=1;i<=n;++i)
v[i]=v2[i];
maxx=v[ind]*(n-ind+1);
s+=maxx;
maxx/=(n-ind+1);
for (i=ind;i<=n;++i)
v[i]-=maxx;
maxx=0;
for (i=ind;i<=n;++i)
if (v[i]*(n-i+1)>maxx)
maxx=v[i]*(n-i+1);
for (i=1;i<ind;++i)
if (v[i]*(ind-i)>maxx)
maxx=v[i]*(ind-i);
s+=maxx;
if (s>sol) sol=s;
}
printf("%lld",sol);
return 0;
}