Pagini recente » Cod sursa (job #1157510) | Cod sursa (job #2737290) | Cod sursa (job #3268078) | Cod sursa (job #2612303) | Cod sursa (job #652019)
Cod sursa(job #652019)
#include <stdio.h>
#include <algorithm>
#define NMAX 100005
#define ll long long
using namespace std;
int n,A[NMAX];
ll B[NMAX],act,rez;
inline ll value(int dr,int st)
{
return (ll)A[st]*(dr-st+1);
}
void rezolva(int dr)
{
int i=1,step=(1<<16);
while (step)
{
if (i+step<=dr && value(dr,i+step)>value(dr,i))
{
i+=step;
continue ;
}
if (i-step>0 && value(dr,i-step)>value(dr,i))
{
i-=step;
continue ;
}
step/=2;
}
B[dr]=value(dr,i);
}
int main()
{
freopen("avioane.in","r",stdin);
freopen("avioane.out","w",stdout);
scanf("%d",&n);
int i;
for (i=1; i<=n; i++)
scanf("%d",&A[i]);
sort(A+1,A+n+1);
for (i=1; i<=n; i++)
rezolva(i);
for (i=1; i<=n; i++)
{
act=B[i-1]+(ll)A[i]*(n-i+1);
if (act>rez)
rez=act;
}
printf("%lld\n",rez);
return 0;
}