Pagini recente » Cod sursa (job #2469514) | Cod sursa (job #1141010) | Cod sursa (job #2612192) | Cod sursa (job #2690246) | Cod sursa (job #1195005)
#include <stdio.h>
#include<algorithm>
using namespace std;
long long sol[100002];
int v[100002], poz[100002],n;
void solve(int st,int dr)
{
if(st>dr)
return ;
else
{
int m=(st+dr)/2;
for(int i=poz[st-1];i<=poz[dr+1] && i<=m;++i)
{
if(sol[m] <= 1LL*v[m]*(n-m+1) + 1LL*v[i]*(m-i))
{
poz[m]=i;
sol[m]=1LL*v[m]*(n-m+1) + 1LL*v[i]*(m-i);
}
}
solve(st,m-1);
solve(m+1,dr);
}
}
int main()
{
FILE*f=fopen("avioane.in","r");
fscanf(f,"%d",&n);
for(int i=1;i<=n;++i)
{
fscanf(f,"%d",&v[i]);
}
sort(v+1,v+n+1);
poz[0]=1;
poz[n+1]=n;
solve(1,n);
long long s=0;
for(int i=1;i<=n;++i)
if(s<sol[i])
{
s=sol[i];
}
FILE*g=fopen("avioane.out","w");
fprintf(g,"%lld",s);
fclose(g);
return 0;
}