Pagini recente » Cod sursa (job #2057452) | Cod sursa (job #2218927) | Cod sursa (job #1696795) | Cod sursa (job #2972458) | Cod sursa (job #2502885)
#include <bits/stdc++.h>
using namespace std;
int_fast64_t n;
int_fast64_t ans;
int_fast64_t v[100009];
int_fast64_t caut (int_fast64_t st, int_fast64_t dr, int_fast64_t poz)
{
int_fast64_t sum=-1;
int_fast64_t nr=0;
for (int_fast64_t i=st; i<=dr && i<=poz; ++i)
{
if (sum<(poz-i)*v[i])
{
sum=(poz-i)*v[i];
nr=i;
}
}
return nr;
}
void solve (int_fast64_t st, int_fast64_t dr, int_fast64_t dst, int_fast64_t ddr)
{
if (st>dr)
{
return;
}
int_fast64_t mij=(st+dr)/2;
int_fast64_t temp=caut(dst,ddr,mij);
ans=max(ans,(mij-temp)*v[temp]+(n-mij+1)*v[mij]);
solve(st,mij-1,dst,temp);
solve(mij+1,dr,temp,ddr);
}
int main()
{
ifstream fin ("avioane.in");
ofstream fout ("avioane.out");
fin>>n;
for (int_fast64_t i=1; i<=n; ++i)
{
fin>>v[i];
}
sort(v+1,v+n+1);
ans=-1;
solve(1,n,1,n);
fout<<ans<<"\n";
return 0;
}