Pagini recente » Cod sursa (job #3157257) | Cod sursa (job #2327084) | Cod sursa (job #117421) | Cod sursa (job #3253807) | Cod sursa (job #1228925)
#include<fstream>
#include<algorithm>
using namespace std;
long long a[100005],s[100005],i,x,n,mx,sol;
void calc(int x,int y)
{
if (y-x<2)
return;
long long i,m,p,mx=0;
m=(x+y)/2;
for (i=s[x];i<=s[y];i++)
if ((n-i+1)*(a[i]-a[m])>mx)
{
mx=(n-i+1)*(a[i]-a[m]);
p=i;
}
s[m]=p;
if (mx+a[m]*(n-m+1)>sol)
sol=mx+a[m]*(n-m+1);
calc(x,m);
calc(m,y);
}
int main()
{
ifstream f("avioane.in");
ofstream g("avioane.out");
f >> n;
for (i=1;i<=n;i++)
f >> a[i];
sort(a+1,a+n+1);
for (i=1;i<=n;i++)
if ((n-i+1)*(a[i]-a[1])>mx)
{
mx=(n-i+1)*(a[i]-a[1]);
x=i;
}
sol=mx+a[1]*n;
s[1]=x;
s[n]=n;
calc(1,n);
g << sol;
}