Pagini recente » Cod sursa (job #187147) | Cod sursa (job #1480029) | Cod sursa (job #478534) | Cod sursa (job #3133619) | Cod sursa (job #585783)
Cod sursa(job #585783)
#include <stdio.h>
#include <algorithm>
using namespace std;
int 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("%d",&n);
for (i=1;i<=n;++i)
{
scanf("%d",&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-100;right=ind+100;
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("%d",sol);
return 0;
}